【发布时间】:2014-11-19 01:00:30
【问题描述】:
此函数旨在获取 JSON 并根据作为参数发送的对象创建一个对象数组:
+ (NSArray *)Object: (id) object FromJSON:(NSData *)objectNotation error:(NSError **)error
{
NSError *localError = nil;
NSArray *parsedObject = [NSJSONSerialization JSONObjectWithData:objectNotation options:0 error:&localError];
if (localError != nil) {
*error = localError;
return nil;
}
NSMutableArray *output = [[NSMutableArray alloc] init];
NSArray *results = [parsedObject valueForKey:@"results"];
NSLog(@"Count %lu", (unsigned long)results.count);
for (NSArray *eventDic in results) {
object = [[[object class] alloc] init];
for (NSString *key in eventDic) {
if ([object respondsToSelector:NSSelectorFromString(key)]) {
[object setValue:[eventDic valueForKey:key] forKey:key];
}
}
[output addObject:object];
}
return output;
}
但是每次我运行它都会崩溃。我收到此错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x1100c3ce0'
我是 iOS 编程新手,不知道这意味着什么。
【问题讨论】:
-
设置exception breakpoint 并查看堆栈,看看是否有帮助。目前尚不清楚您要做什么。您能否举例说明您的输入和预期输出?
-
对于这个输入:Object:[Event] FromJSON:JSON,它应该返回一个Event对象数组。
-
使用断点,发现结果数组没有任何NSDictionary Objects,它有3个NSNull *
-
您的示例 JSON 有一个数组作为根对象。所以
parsedObject应该是NSArray,是吗? -
有道理,我已经更新了问题中的代码,但它仍然给了我一个序列化的 3 个空对象。
标签: ios objective-c crash dynamic-typing