0

行を選択した後、配列にデータを入力したいと思います。次に、関数を使用して配列にデータを入力します。これが状況です。アルバムのタイトルを表示するテーブルビューがあります。行を選択すると、FGalleryライブラリを使用してすべての画像が表示されます。これが私の配列を作成するための私の関数です。

- (NSMutableArray *)getAllPicturesOfAlbumId: (int)AlbumId
{
    NSLog(@"tot hier");
    _picturesForAlbum = [[NSMutableArray alloc]init];
    NSArray *results = [[NSArray alloc]init];
    //picture_Url = @"";
    NSLog(@"tot hier");
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"whichAlbum.album_id == %d", AlbumId];
    [request setEntity:[NSEntityDescription entityForName:@"Picture" inManagedObjectContext:self.genkDatabase.managedObjectContext]];
    [request setPredicate:predicate];
    NSError *error = nil;
    NSLog(@"tot hier");
    results = [self.genkDatabase.managedObjectContext executeFetchRequest:request error:&error];
    if (results == nil) {
        // handle errors
        NSLog(@"geen resultaten");
    } else if (results.count == 0) {
        // nothing found
        NSLog(@"0 resultaten");
    } else {
        for(int i = 0; i < results.count ; i++){
           // NSLog(@"%@",[results valueForKey:@"url"]);
            [_picturesForAlbum addObject: [results valueForKey:@"url"]];
        }
    }

    return _picturesForAlbum;
}

これが私のFGalleryメソッドです。

- (int)numberOfPhotosForPhotoGallery:(FGalleryViewController *)gallery
{
     return [networkImages count];

}


- (FGalleryPhotoSourceType)photoGallery:(FGalleryViewController *)gallery sourceTypeForPhotoAtIndex:(NSUInteger)index
{
     return FGalleryPhotoSourceTypeNetwork;
}


- (NSString*)photoGallery:(FGalleryViewController *)gallery urlForPhotoSize:(FGalleryPhotoSize)size atIndex:(NSUInteger)index {
    return [networkImages objectAtIndex:index];
}

そして、これは私のdidSelectRowAtIndexPathで行うことです

networkImages = [[NSArray alloc] initWithArray:[self getAllPicturesOfAlbumId:indexPath.row]];
networkGallery = [[FGalleryViewController alloc] initWithPhotoSource:self];
[self.navigationController pushViewController:networkGallery animated:YES];

なんらかの理由で、私のnetworkImagesには、メソッド「getAllPicturesOfAlbumId」から返される配列が数回入力されます。そのため、次のエラーが発生すると思います。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI length]: unrecognized selector sent to instance 0xa15d090'

誰かが問題が何であるかについての考えを持っていますか?

前もって感謝します。

4

1 に答える 1

0

配列でvalueForKeyを呼び出すと、そのキーのすべての値の配列が返されます。したがって、メソッドgetAllPicturesOfAlbumIdでは、結果をループするのではなく、[results valueForKey:@ "URL"]を返すだけです(したがって、_picturesForAlbum配列を作成する必要はありません)。

于 2012-10-15T22:03:10.187 に答える