解释:
首先,JSONModel 期望您的 JSON 顶级对象是一个字典,只有这样它才能将其键与模型的属性相匹配。
您的名为 TutorialFeed 的模型需要提供与属性名称“tutorials”匹配的 JSON。这意味着您的 JSON feed 必须采用以下形式:
{“教程”:[{obj1},{obj2},{obj3},...] }
您实际上拥有什么:http://api.matematikfessor.dk/apps/teacher_videos is
[{obj1}、{obj2}、{obj3}]
这就是为什么您的模型实例实际上是“nil”,因为 JSON 结构与您的模型期望的不匹配。
解决方案:
如果您的 JSON feed 顶部有一个数组(如您使用的 URL 上的数组),您有两种选择:
1) 在 JSON feed 中引入一个新键 - 即,将 JSON 更改为 {"tutorials": [obj1, obj2, etc...]} 的形式
2) 您可以使用另一种方法来解析 JSON feed。查找文档在这里并使用解析对象列表的静态方法:
#import "JSONModel+networking.h"
...
[JSONHTTPClient
getJSONFromURLWithString:@"http://api.matematikfessor.dk/apps/teacher_videos"
completion:^(id feed, JSONModelError *err) {
NSArray* tutorials = [Tutorial arrayOfModelsFromDictionaries: feed];
NSLog(@"tutorials: %@", tutorials);
}];