JSONModel - 使用同一JSONModel中的其他属性分配JSONModel属性的值

时间:2016-09-03 08:23:13

标签: ios objective-c json jsonmodel

这是我的JSON数据

[{
    "id": 1,
    "name":"Soup",
    "price1":100,
    "price2":10,
},
{
    "id": 2,
    "name":"Salad",
    "price1":100,
    "price2":10,
}]

我按如下方式创建了JSONModel

@interface ProductModel : JSONModel
@property (assign, nonatomic) int id;
@property (strong, nonatomic) NSString* name;
@property (assign, nonatomic) float price1;
@property (assign, nonatomic) float price2;
@property (assign, nonatomic) BOOL isOK;
@property (assign, nonatomic) float<Optional> total; // not coming
@end

在viewcontroller中

NSArray* models = [ProductModel arrayOfModelsFromDictionaries:objects];

现在我想要的是

if(isOK)
{
   total = price1 + price2;
} else {
   total = price1 - price2;
}

是否可以在模型文件中的某处编写此逻辑,而无需在viewcontroller中迭代模型数组并分配 total 的值

2 个答案:

答案 0 :(得分:3)

我的建议是,为total课程中的ProductModel媒体资源创建一个getter。

-(float) total
{
   if(self.isOK)
   {
      return self.price1 + self.price2;
   } else {
      return self.price1 - self.price2;
   }
}

答案 1 :(得分:2)

  • ProductModel

    中声明只读属性
    @property (assign, nonatomic, readonly) float total;
    
  • 并实施

    - (float)total
    {
       return (self.isOK) ? self.price1 + self.price2 : self.price1 - self.price2;
    }
    

然后,您只需使用语法model.total

即可读取该值