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
读取值
这是我的 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