【发布时间】:2014-03-07 19:54:49
【问题描述】:
创建 JSONModel 时出现错误。
Error Domain=JSONModelErrorDomain Code=1 “无效的 JSON 数据:尝试使用 initWithDictionary 初始化 JSONModel 对象:错误:但字典参数不是 'NSDictionary'。” UserInfo=0x9bc2340 {kJSONModelKeyPath=categories.Data, NSLocalizedDescription=无效的 JSON 数据:尝试使用 initWithDictionary 初始化 JSONModel 对象:错误:但字典参数不是“NSDictionary”。}
这是我收到的回复...
{
"categories": {
"Data": [
{
"Id": 19,
"Name": "",
"Description": "",
"ImageURL": "",
"FullSizeImageUrl": "",
"ParentCategoryId": 0
}
],
"Total": 1
}
}
这是我的模型
@interface CategoryResponse : JSONModel
@property (strong, nonatomic) NSDictionary <Categories> *categories;
@end
@protocol Categories @end
@interface Categories : JSONModel
@property (assign, nonatomic) int Total;
@property (strong, nonatomic) NSArray<CategoryData> *Data;
@end
@protocol CategoryData @end
@interface CategoryData : JSONModel
@property (strong, nonatomic) NSString <Optional> *Name;
@property (strong, nonatomic) NSString <Optional> *Description;
@property (strong, nonatomic) NSString <Optional> *ImageURL;
@property (strong, nonatomic) NSString <Optional> *FullSizeImageUrl;
@property (assign, nonatomic) int Id;
@property (assign, nonatomic) int ParentCategoryId;
void (^success)(AFHTTPRequestOperation *, id) = ^(AFHTTPRequestOperation *op, id data) {
NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSError *error;
categories = [[CategoryResponse alloc] initWithString:responseString error:&error];
complete(nil, categories);
};
我意识到@property (strong, nonatomic) NSDictionary <Categories> *categories; 不是这样做的正确方法,但我不知道是什么。
【问题讨论】:
-
"但字典参数不是 'NSDictionary'。"这对你说了什么???
-
异常堆栈跟踪在哪里?
-
我认为您的 CategoryResponse 对象应该编码为
@property (strong, nonatomic) Categories *categories; -
你能处理响应数据来生成你的字典吗:[NSJSONSerialization jsonObjectWithData:data..]
-
HotLicks - 这就是解决方案。当我挂断电话时,我想我盯着屏幕太久了:)如果你想发布答案,我会接受。
标签: ios objective-c json nsdictionary jsonmodel