无法从目标 C 中的 JSON Web 服务获取值

Posted

技术标签:

【中文标题】无法从目标 C 中的 JSON Web 服务获取值【英文标题】:Not possible to get a value from JSON webservice in objective C 【发布时间】:2012-10-05 15:09:42 【问题描述】:

我有一个具有以下结构的网络服务。



    "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

'

【问题讨论】:

你能显示你获取 URL 的代码行吗? 我在上面编辑了我的代码。但我认为这段代码有效,因为在其他情况下它有效。 【参考方案1】:

您可以使用 media.albums 获取专辑,因为专辑是键“媒体”的值,但“图片”不是键专辑的值——该值是一个数组(因此您的错误消息)字典。我不知道这是否可行,但你可以试试这个:

NSArray *arr = [[self executeGenkFetch:request] valueForKeyPath:@"media.albums"];
return [[arr objectAtIndex:0] valueForKey:@"pictures"];

【讨论】:

以上是关于无法从目标 C 中的 JSON Web 服务获取值的主要内容,如果未能解决你的问题,请参考以下文章

如何从目标 c 中的单词 \"hello\" 中删除 \?

我正在从 json Web 服务获取数据,但无法在我的 ui 上显示它

无法使用 jquery 从 Web API 获取 JSON 响应

如何使用目标 C 解析 JSON 并获取特定值? [复制]

无法解析从 iOS 中的 PHP 获取的 JSON

无法从 Xcode 中的 JSON 获取最新值