MapMapM 2012-11-19 18:33 采纳率: 0%
浏览 14722
已采纳

解析(__NSArrayM objectForKey:)出现问题

在用SBJson解析Json的时候出现问题,总是得到错误:"__NSArrayM objectForKey:"

要解析的Json:

{
"result": [
    {
        "authors": [
            "Eric Ries"
        ],
        "bc": 9780671607,
        "title": "Yeah",
        "urlImage": "www.yeah.hey",
        "description": "Hey..."
    }
    ]
}

代码:

SBJsonParser *json;
NSDictionary *jsonResults;
NSError *jsonError;

json = [ SBJsonParser new ];

// 在NSDictionary获取结果
jsonResults = (NSDictionary*) [ json objectWithString:output error:&jsonError ];

// 检测错误
if (jsonResults == nil) {
    NSLog(@"Erreur lors de la lecture du code JSON (%@).", [ jsonError localizedDescription ]);  
} else {
    NSDictionary *book = (NSDictionary *)[ jsonResults objectForKey:@"result"];
    NSArray *items = (NSArray *) [book objectForKey:@"title"];
}

错误提示:

-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x7a2d390
2012-11-19 20:32:36.336 FMS[500:11f03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x7a2d390'
*** First throw call stack:
(0x2245012 0x16a3e7e 0x22d04bd 0x2234bbc 0x223494e 0x8c6a 0x36093 0xb39e83 0x2204376 0x2203e06 0x21eba82 0x21eaf44 0x21eae1b 0x219f7e3 0x219f668 0x8365c 0x2d6d 0x2c95)
libc++abi.dylib: terminate called throwing an exception
Current language:  auto; currently objective-c

用valueForKey代替objectForKey的话

[book valueForKey:@"title"];

得到的结果是:

(
    "Yeah"
)

我想要的不是"yeah"结果。

展开全部

  • 写回答

3条回答 默认 最新

  • MrsSeven7 2012-11-19 19:16
    关注

    你的“book”是一个数组,不是dictionary。因此book只有一个outer object,在book前加这一句:

    NSDictionary *book = [[ jsonResults objectForKey:@"result"] lastObject];
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部