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

JSONModel - Assign value of JSONModel property using other properties in same JSONModel

这是我的 JSON 数据

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

我创建了JSON模型如下

@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 的值

我的建议是您在 ProductModel class.

中为 total 属性 创建一个 getter
-(float) total
{
   if(self.isOK)
   {
      return self.price1 + self.price2;
   } else {
      return self.price1 - self.price2;
   }
}
  • ProductModel

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

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

然后您可以简单地使用语法 model.total

读取值