我正在处理一个应用程序,当我试图从从服务器接收的数据中读取值时,我被阻塞了。
我有这样的代码:
//Item.h
@interface Item : MTLModel <MTLJSONSerializing>
@property (copy, nonatomic) NSNumber *itemId;
@property (copy, nonatomic) NSString *name;
@end
//Item.m
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"itemId" : @"id",
@"name" : @"name"
};
}下面是我认为错误的代码:
// responseObject is the data received from server using AFNetworking
for (NSDictionary *dict in responseObject) {
Item *myItem = [MTLJSONAdapter modelOfClass:Item.class fromJSONDictionary:dict error:nil];
}responseObject的模式是:
{
"message": "message",
"success": true,
"item": {
"id": 14576,
"name": "name",
"created_at": 1438245872,
"repeat": false,
"thumb": {
"src": "urlToImage",
"width": 100,
"height": 120
}
}
}当我运行应用程序时,崩溃消息是
-[NSTaggedPointerString count]: unrecognized selector sent to instance 0xa737365636375737
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSTaggedPointerString count]: unrecognized selector sent to instance 0xa737365636375737'我还尝试使用以下语句来获取数据,但在本例中,itemId和name为空:
Item *myItem = [MTLJSONAdapter modelOfClass:Item.class fromJSONDictionary:responseObject error:nil];所以我有两个问题:我怎样才能让它工作?而且,我应该如何获得相同的“拇指”的值呢?我看到它是一个嵌套的块,我认为这可能会更有问题。
我希望你能帮我解决这个问题。提前感谢!
发布于 2016-10-11 03:23:30
必须声明与JSON数据相关的完整密钥路径:
//Item.m
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"itemId" : @"item.id",
@"name" : @"item.name"
};
}要解析thumb,您可以使用密钥路径"item.thumb.src"。但最好像这样创建单独的类:
//Thumb.h
@interface Thumb : MTLModel <MTLJSONSerializing>
@property (copy, nonatomic) NSURL *src;
@end
//Thumb.m
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"src" : @"src"
};
}然后使用Item进行下一步更改:
//Item.h
@interface Item : MTLModel <MTLJSONSerializing>
@property (copy, nonatomic) NSNumber *itemId;
@property (copy, nonatomic) NSString *name;
@property (copy, nonatomic) Thumb *thumb;
@end
//Item.m
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"itemId" : @"item.id",
@"name" : @"item.name"
@"Thumb" : @"item.thumb"
};
}我希望它能对你有所帮助。
https://stackoverflow.com/questions/39964952
复制相似问题