Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios JSON模型-don';如果使用“方法”,则不添加数组中的所有对象;arrayOfModelsFromDictionaries“;_Ios_Objective C_Json_Jsonmodel - Fatal编程技术网

Ios JSON模型-don';如果使用“方法”,则不添加数组中的所有对象;arrayOfModelsFromDictionaries“;

Ios JSON模型-don';如果使用“方法”,则不添加数组中的所有对象;arrayOfModelsFromDictionaries“;,ios,objective-c,json,jsonmodel,Ios,Objective C,Json,Jsonmodel,这是我的JSON数据 [{ "id": 1, "name":"Soup", "price":200, "isOK":1 }, { "id": 2, "name":"Salad", "price":100, "isOK":0 }] 我创建了JSONModel,如下所示 @interface ProductModel : JSONModel @property (assign, nonatomic) int id; @property

这是我的JSON数据

[{
    "id": 1,
    "name":"Soup",
    "price":200,
    "isOK":1
},
{
    "id": 2,
    "name":"Salad",
    "price":100,
    "isOK":0
}]
我创建了JSONModel,如下所示

@interface ProductModel : JSONModel
@property (assign, nonatomic) int id;
@property (strong, nonatomic) NSString* name;
@property (assign, nonatomic) float price;
@property (assign, nonatomic) BOOL isOK;
@end
其次,

NSArray* modelsArray = [ProductModel arrayOfModelsFromDictionaries:objects];
现在我想要的是

if(isOK)
{
   // then add the model into the modelsArray
} else {
   // then don't add the model into the modelsArray
}
是否可以在模型文件中的某个位置写入此逻辑,而无需迭代modelsArray,然后根据isOK逐个删除对象

NSArray* modelsArray = [ProductModel arrayOfModelsFromDictionaries:objects];    
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isOK == 1"];
NSArray* filtedArray = [modelsArray filteredArrayUsingPredicate:predicate];
这里modelArray包含所有值isOK=0和isOK=1

通过这段代码,您得到了两个不同的数组,其中包含两个类型值,即isOK=1和isOK=0。现在,您可以在需要使用时直接使用数组

输出: 已过滤的\u阵列\u正常

 (
        {
        id = 1;
        isOK = 1;
        name = Soup;
        price = 200;
    },
        {
        id = 3;
        isOK = 1;
        name = peace;
        price = 900;
    }
)
(
        {
        id = 2;
        isOK = 0;
        name = cake;
        price = 200;
    },
        {
        id = 4;
        isOK = 0;
        name = bread;
        price = 800;
    }
)
过滤的\u数组\u不正常

 (
        {
        id = 1;
        isOK = 1;
        name = Soup;
        price = 200;
    },
        {
        id = 3;
        isOK = 1;
        name = peace;
        price = 900;
    }
)
(
        {
        id = 2;
        isOK = 0;
        name = cake;
        price = 200;
    },
        {
        id = 4;
        isOK = 0;
        name = bread;
        price = 800;
    }
)
这里modelArray包含所有值isOK=0和isOK=1

通过这段代码,您得到了两个不同的数组,其中包含两个类型值,即isOK=1和isOK=0。现在,您可以在需要使用时直接使用数组

输出: 已过滤的\u阵列\u正常

 (
        {
        id = 1;
        isOK = 1;
        name = Soup;
        price = 200;
    },
        {
        id = 3;
        isOK = 1;
        name = peace;
        price = 900;
    }
)
(
        {
        id = 2;
        isOK = 0;
        name = cake;
        price = 200;
    },
        {
        id = 4;
        isOK = 0;
        name = bread;
        price = 800;
    }
)
过滤的\u数组\u不正常

 (
        {
        id = 1;
        isOK = 1;
        name = Soup;
        price = 200;
    },
        {
        id = 3;
        isOK = 1;
        name = peace;
        price = 900;
    }
)
(
        {
        id = 2;
        isOK = 0;
        name = cake;
        price = 200;
    },
        {
        id = 4;
        isOK = 0;
        name = bread;
        price = 800;
    }
)

使用快速枚举可以做到这一点

for (ProductModel* productModel in objects) {
  if(productModel.isOK){
   [modelarray addOjbect:productModel];
  }
}

使用快速枚举可以做到这一点

for (ProductModel* productModel in objects) {
  if(productModel.isOK){
   [modelarray addOjbect:productModel];
  }
}

是的,您可以使用NSPredicate

   NSArray* modelsArray = [ProductModel arrayOfModelsFromDictionaries:objects];    
  [NSPredicate predicateWithFormat:@"SELF.isOK == %@ && SELF.isOK != nil", @YES];
   NSArray* filtedArray = [modelsArray filteredArrayUsingPredicate:predicate];

是的,您可以使用NSPredicate

   NSArray* modelsArray = [ProductModel arrayOfModelsFromDictionaries:objects];    
  [NSPredicate predicateWithFormat:@"SELF.isOK == %@ && SELF.isOK != nil", @YES];
   NSArray* filtedArray = [modelsArray filteredArrayUsingPredicate:predicate];


你想从isok值的BACE上的modelsArray中删除对象吗?@balkaran singh这是正确的,但不需要再次迭代数组,你可以使用NSPredicate来完成此操作。你能再解释一下吗?@Haider你在modelsArray中得到数组了吗?你想从isok值的BACE上的modelsArray中删除对象吗?@balkaran singh这是正确的,但是不需要再次迭代数组,您就可以使用NSPredicate进行此操作。您能再解释一点吗?@Haider您在模型中得到数组了吗。无论如何,谢谢你的详细回答。@Haider我只给你2个数组,这样当你想使用它时,你就可以很容易地访问它。好的,我想知道模型文件中是否有一个函数,它将返回true或false,并决定是否将对象添加到数组中。无论如何,谢谢你的详细回答。@Haider我只给你2个数组,这样当你想使用它时,你就可以很容易地访问它。好的,我想知道模型文件中是否有一个函数,它将返回true或false,并决定是否将对象添加到数组中。谢谢你的回答,我想知道模型文件中是否有一个函数,它将返回true或false,并决定是否将对象添加到数组中。谢谢你的回答你想做什么?你想做什么?