0

次の構造の Web サービスがあります。

{

    "media": {
        "albums": [
            {
                "name": "FC Bazel - KRC Genk",
                "date": "04.10.2012",
                "pictures": [
                    {
                        "url": "http://www.krcgenk.be/images/gallery/album_198/800X600/8162f172f8e5739c535c97b7bb6ca276.jpg"
                    },
                    {
                        "url": "http://www.krcgenk.be/images/gallery/album_198/800X600/5635d20351aacef78563dee347468227.jpg"
                    }
]

コア データ データベースの別のエンティティにアルバムと写真を保存しています。次の値を取得しています。

+ (NSArray *)getAlbums
{
    NSString *request = [NSString stringWithFormat:@"http://www.krcgenk.be/mobile/json/request/media/type/ipad"];
    return [[self executeGenkFetch:request] valueForKeyPath:@"media.albums"];
}
+ (NSArray *)getPictures
{
    NSString *request = [NSString stringWithFormat:@"http://www.krcgenk.be/mobile/json/request/media/type/ipad"];
    return [[self executeGenkFetch:request] valueForKeyPath:@"media.albums.pictures"];
}

そして、次のように値を定義します。

#define ALBUMS_NAME @"name"
#define ALBUMS_DATE @"date"

#define PICTURES_URL @"pictures.url"

すべてがアルバムに最適です。しかし、写真の URL を取得しようとすると、次のエラーでクラッシュします。

__NSArrayI objectForKey:]: unrecognized selector sent to instance 0xa48a460
2012-10-05 17:06:50.201 RacingGenk[97248:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI objectForKey:]: unrecognized selector sent to instance 0xa48a460

誰か助けてくれませんか?

敬具。

- - -編集 - -

+ (Picture *)pictureWithGenkInfo:(NSDictionary *)genkInfo
          inManagedObjectContext:(NSManagedObjectContext *)context
                     withAlbumId:(int)albumId
                   withPictureId:(int)pictureId;
{

    Picture *picture = nil;

    picture = [NSEntityDescription insertNewObjectForEntityForName:@"Picture"
                                          inManagedObjectContext:context];
    NSLog(@"methode komt tot hier");
    picture.url                     = [genkInfo objectForKey:PICTURES_URL];

return picture
}

'

4

1 に答える 1

0

アルバムはキー「メディア」の値ですが、「写真」はキーアルバムの値ではないため、media.albums でアルバムを取得できます。値は辞書の配列 (したがってエラーメッセージ) です。これが機能するかどうかはわかりませんが、これを試すことができます:

NSArray *arr = [[self executeGenkFetch:request] valueForKeyPath:@"media.albums"];
return [[arr objectAtIndex:0] valueForKey:@"pictures"];
于 2012-10-05T15:30:12.170 に答える