Ios 地幔性质的处理

Ios 地幔性质的处理,ios,json,cocoa-touch,github-mantle,Ios,Json,Cocoa Touch,Github Mantle,我需要有一个JSON中不存在的属性,但是当我尝试使用这个模型对象时需要设置它。我想向你展示这个例子会更容易 以下是我的JSON示例: [{ "name" : "Safari", "key" : "safari", "app_url_scheme" : "http://www.twitter.com", "actions" : [{ "key" : "show_profile", "url_format" : "http://www.twitter.com/{{

我需要有一个JSON中不存在的属性,但是当我尝试使用这个模型对象时需要设置它。我想向你展示这个例子会更容易

以下是我的JSON示例:

[{
  "name" : "Safari",
  "key" : "safari",
  "app_url_scheme" : "http://www.twitter.com",
  "actions" :
  [{
    "key" : "show_profile",
    "url_format" : "http://www.twitter.com/{{profile_screenname}}"
  }]
 }
]
JSONKeyPathsByPropertyKey
方法如下所示:

+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
    return @{
             @"appName" : @"name",
             @"appKey" : @"key",
             @"appURLScheme" : @"app_url_scheme",
             @"appActions" : @"actions",
             @"isInstalled" : NSNull.null
             };
}
因此,正如您所看到的,在映射过程中应该忽略这个
isInstalled
方法(因为JSON中没有这样的字段),但是一旦这个对象被完全映射,我就需要设置这个属性。更重要的是,我需要根据JSON中提供的其他属性设置它。如何做到这一点?

我找到了如下解决方案:

但是这个
@selector
永远不会被调用

@"videoType" : @"@Selector(videoTypeFromString:, type)",

//! implemented on instance you are parsing
- (NSUInteger)videoTypeFromString:(NSString *)type
{
  if ([type isEqualToString:@"shortVideo"]) {
    return VideoTypeShort;
  }

  return VideoTypeLong;
}