我正在使用Mantle框架,在将某些值序列化为MTLModel时,我似乎遇到了一些问题。这是我从服务器接收到的JSON:
{
"id":50,
"name":"UserName",
"email":"user@username.com",
"profile":{
"picture": {
"original": "http://original.com/picture",
"versions": {
"thumb": "http://thumb.com/picture",
"small": "http://small.com/picture"
}
}
}
}我已经以以下方式设置了我的MTLModel:
用户
@interface User : MTLModel <MTLJSONSerializing>
@property (nonatomic, readonly) NSNumber *id;
@property (nonatomic) NSString *name;
@property (nonatomic) NSString *email;
@property (nonatomic) Profile *profile;
@end
@implementation User
+ (NSDictionary *)JSONKeyPathsByPropertyKey {
return @{
@"id": @"id",
@"name": @"name",
@"email": @"email",
@"profile": @"profile"
};
}
- (NSValueTransformer *)profileJSONTransformer {
return [MTLValueTransformer reversibleTransformerWithForwardBlock:^(NSDictionary *profileDict) {
return [MTLJSONAdapter modelOfClass:Profile.class
fromJSONDictionary:profileDict
error:nil];
} reverseBlock:^(Profile *profile) {
return [MTLJSONAdapter JSONDictionaryFromModel:profile];
}];
}
@endProfile
@interface Profile : MTLModel <MTLJSONSerializing>
@property (nonatomic) Picture *picture;
@end
@implementation Profile
+ (NSDictionary *)JSONKeyPathsByPropertyKeys {
return @{
@"picture": @"picture"
};
}
- (NSValueTransformer *)pictureJSONTransformer {
return [MTLValueTransformer reversibleTransformerWithForwardBlock:^(NSDictionary *picDict) {
return [MTLJSONAdapter modelOfClass:Picture.class
fromJSONDictionary:picDict
error:nil];
} reverseBlock:^(Picture *picture) {
return [MTLJSONAdapter JSONDictionaryFromModel:picture];
}];
}
@end图片
@interface Picture : MTLModel <MTLJSONSerializing>
@property (nonatomic) NSString *original;
@property (nonatomic) Versions *versions;
@end
@implementation Picture
+ (NSDictionary *)JSONKeyPathsByPropertyKeys {
return @{
@"original": @"original",
@"versions": @"versions"
};
}
- (NSValueTransformer *)versionsJSONTransformer {
return [MTLValueTransformer reversibleTransformerWithForwardBlock:^(NSDictionary *versionDict) {
return [MTLJSONAdapter modelOfClass:Versions.class
fromJSONDictionary:versionDict
error:nil];
} reverseBlock:^(Versions *versions) {
return [MTLJSONAdapter JSONDictionaryFromModel:versions];
}];
}
@end版本
@interface Versions : MTLModel <MTLJSONSerializing>
@property (nonatomic) NSString *thumb;
@property (nonatomic) NSString *small;
@end
@implementation Versions
+ (NSDictionary *)JSONKeyPathsByPropertyKey {
return @{
@"thumb": @"thumb",
@"small": @"small"
};
}
@end我正在执行下面的Overcoat POST调用来获取JSON。当我NSLog响应时,我正在收到JSON罚款:
[[Client getInstance] POST:@"authorize.json" parameters:params completion:^(id response, NSError *error) {
if (!error) {
User *user = [MTLJSONAdapter modelOfClass:[User class] fromJSONDictionary:[response result] error:nil];
Picture *picture = [[user profile] picture];
NSLog(@"%@", picture);
} else {
NSLog(@"%@", error);
}
}];当我试图抓取Picture对象时,会出现这样的问题:
Picture *picture = [[user profile] picture];我有一个例外:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary picture]: unrecognized selector sent to instance 0x7f95026d4210'我怎么才能解决这个问题?我做错了什么?
发布于 2015-09-02 05:30:48
您没有解析您的json properly.the图片字典嵌套在概要文件中。把它弄成某种东西
Nsmutabledictinary *profile=jsondic objectforkey:@"Profile";
Nsmutabledictinary *picture=profile objectforkey:@“图片”;
请更正语法错误,因为我没有在编辑器中编写代码,所以代码.thanks中可能有语法错误
https://stackoverflow.com/questions/32345137
复制相似问题