Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.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
Iphone 如何筛选NSDictionary数组中以逗号分隔的键_Iphone_Ios_Cocoa Touch - Fatal编程技术网

Iphone 如何筛选NSDictionary数组中以逗号分隔的键

Iphone 如何筛选NSDictionary数组中以逗号分隔的键,iphone,ios,cocoa-touch,Iphone,Ios,Cocoa Touch,我有一个NSDictionary数组。NSDictionary有一个名为multiple_image key的键,该键包含由分隔的字符串 我想要一组数组,包含123.png的多个_图像键。 有人能告诉我如何使用NSPredicate或不使用谓词来实现这一点吗 //Array { Image = "<UIImage: 0xf72df30>"; active = yes; "admin_id" = 169; "category_id" = 32;

我有一个NSDictionary数组。NSDictionary有一个名为multiple_image key的键,该键包含由分隔的字符串

我想要一组数组,包含123.png的多个_图像键。 有人能告诉我如何使用NSPredicate或不使用谓词来实现这一点吗

//Array 
{
    Image = "<UIImage: 0xf72df30>";
    active = yes;
    "admin_id" = 169;
    "category_id" = 32;
    "chef_id" = 175;
    descr = "Cool tea to cool down the mind.";
    id = 110;
    "multiple_images" = "Jellyfish.jpg,345.png";
    name = "Southern Sweet Ice Tea";
    price = 160;
    rating = 3;
    selected = 0;
    "subcat_id" = 23;
    "tag_id" = 45;
    "tax_id" = 10;
    "tax_value" = "12.00";
},
    {
    Image = "<UIImage: 0xf72ebd0>";
    active = yes;
    "admin_id" = 169;
    "category_id" = 31;
    "chef_id" = 175;
    descr = "Ingredients are almonds or cashews. No hydrogenated stuff, no extra weirdo ingredients";
    id = 107;
    "multiple_images" = "Jellyfish.jpg,123.png";
    name = "Butter Chicken";
    price = 300;
    rating = 3;
    selected = 0;
    "subcat_id" = 24;
    "tag_id" = 43;
    "tax_id" = 9;
    "tax_value" = "0.00";
},
    {
    Image = "<UIImage: 0xf72f870>";
    active = yes;
    "admin_id" = 169;
    "category_id" = 31;
    "chef_id" = 173;
    descr = "Raw vegetables  including carrots, cucumbers.";
    id = 100;
    "multiple_images" = "Jellyfish.jpg,shake.png,";
    name = Salads;
    price = 50;
    rating = 3;
    selected = 0;
    "subcat_id" = 22;
    "tag_id" = 44;
    "tax_id" = 9;
    "tax_value" = "0.00";
}
//数组
{
Image=“”;
主动=是;
“管理员id”=169;
“类别识别号”=32;
“厨师长id”=175;
descr=“凉茶可以让头脑冷静下来。”;
id=110;
“多张图片”=“jellyish.jpg,345.png”;
name=“南方甜冰茶”;
价格=160;
评级=3;
所选=0;
“子类别id”=23;
“标签id”=45;
“税号”=10;
“税值”=“12.00”;
},
{
Image=“”;
主动=是;
“管理员id”=169;
“类别识别号”=31;
“厨师长id”=175;
descr=“成分是杏仁或腰果。没有氢化物质,没有额外的古怪成分”;
id=107;
“多张图片”=“jellyish.jpg,123.png”;
name=“黄油鸡”;
价格=300;
评级=3;
所选=0;
“子类别id”=24;
“标签id”=43;
“税号”=9;
“税值”=“0.00”;
},
{
Image=“”;
主动=是;
“管理员id”=169;
“类别识别号”=31;
“厨师长id”=173;
descr=“生蔬菜,包括胡萝卜、黄瓜。”;
id=100;
“多张图片”=“jellyish.jpg,shake.png”;
名称=沙拉;
价格=50;
评级=3;
所选=0;
“子类别id”=22;
“标签id”=44;
“税号”=9;
“税值”=“0.00”;
}
试试看

现在您可以使用图像了

试试看

现在您可以使用谓词使用图像

[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"multiple_images CONTAINS '123'"]];
使用谓词,但使用块

    NSArray *filtered = [test filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:
    ^BOOL(NSDictionary *evaluatedObject, NSDictionary * bindings) {
        NSString *key = @"123";
        return ([evaluatedObject[@"multiple_images"] rangeOfString:key].location != NSNotFound);
    }]];
使用谓词

[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"multiple_images CONTAINS '123'"]];
使用谓词,但使用块

    NSArray *filtered = [test filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:
    ^BOOL(NSDictionary *evaluatedObject, NSDictionary * bindings) {
        NSString *key = @"123";
        return ([evaluatedObject[@"multiple_images"] rangeOfString:key].location != NSNotFound);
    }]];
试试这个代码

     for (int i=0; i<[mainArray count]; i++) {
            NSDictionary *item = [mainArray objectAtIndex:i];
            NSString *imagesString = item[@"multiple_images"];
            NSArray *images = [imagesString componentsSeparatedByString:@","];

            for (int j=0;j<[images count]; j++) {
                if ([[images objectAtIndex:j] isEqualToString:@"123.png"]) {
                    ///Your Required code;
                }
            }
      }
for(inti=0;i请尝试此代码

     for (int i=0; i<[mainArray count]; i++) {
            NSDictionary *item = [mainArray objectAtIndex:i];
            NSString *imagesString = item[@"multiple_images"];
            NSArray *images = [imagesString componentsSeparatedByString:@","];

            for (int j=0;j<[images count]; j++) {
                if ([[images objectAtIndex:j] isEqualToString:@"123.png"]) {
                    ///Your Required code;
                }
            }
      }

for(int i=0;i因此您希望保存包含123.png的字典

也许你可以试试这样的东西:

NSMutableArray *arr = [NSMutableArray new];// your array of objects(dictionaries)
__block NSMutableArray *images123 = [NSMutableArray new];
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

    NSMutableDictionary *dictionary = (NSMutableDictionary *)obj;

    if([[dictionary allKeys]containsObject:@"multiple_images"]){
        NSString *imageList = (NSString *)[dictionary objectForKey:@"multiple_images"];
        NSArray *arrayImages = [imageList componentsSeparatedByString:@","];

        if([arrayImages containsObject:@"123.png"]){
            [images123 addObject:dictionary];
        }
    }
}];

因此,您希望保存包含123.png的字典

也许你可以试试这样的东西:

NSMutableArray *arr = [NSMutableArray new];// your array of objects(dictionaries)
__block NSMutableArray *images123 = [NSMutableArray new];
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

    NSMutableDictionary *dictionary = (NSMutableDictionary *)obj;

    if([[dictionary allKeys]containsObject:@"multiple_images"]){
        NSString *imageList = (NSString *)[dictionary objectForKey:@"multiple_images"];
        NSArray *arrayImages = [imageList componentsSeparatedByString:@","];

        if([arrayImages containsObject:@"123.png"]){
            [images123 addObject:dictionary];
        }
    }
}];

我不想要图像,我需要一组包含123的数组。png@SurajGupta你想在多张图片中找到
123.png
的项目吗?你能澄清一下吗?我需要{Image=”“;active=yes;“admin\u id”=169;“category\u id”=31;“chef\u id”=175;descr=“成分是杏仁或腰果。没有氢化的东西,没有额外的怪胎成分”;id=107;“多张图片”=“123.png”;name=“黄油鸡”;价格=300;评级=3;选定=0;“副卡id”=24;“标签id”=43;“税id”=9;“税值”=“0.00”}@苏拉古普塔——德米特里·舍甫琴科的回答就是这样。我不想要图像,我需要一组包含123的数组。png@SurajGupta你想在多张图片中找到
123.png
的项目吗?你能澄清一下吗?我需要{Image=”“;active=yes;“admin\u id”=169;“category\u id”=31;“chef\u id”“=175;descr=”成分是杏仁或腰果。没有氢化的东西,没有额外的古怪成分”;id=107;“多张图片”=“123.png”;name=”黄油鸡”;价格=300;评级=3;选中=0;“子类别id”=24;“标签id”=43;“税id”=9;“税值”=“0.00”;”@苏拉古普塔德米特里·舍甫琴科的回答正是这样。我不想使用循环等@SurajGupta对不起,先生,在你的问题中你没有指定你不想使用循环…我不想使用循环等@SurajGupta对不起,先生,在你的问题中你没有指定你不想使用循环…如果我想把字典分成两部分呢art one包含123.png,而另一个Jellyfish.jpg。你能保证数组中没有项目同时包含123和Jellyfish吗?在这种情况下,只需在123上运行两个过滤器,一个一个。@SurajGupta处理多个图像的方式是错误的。你应该有一个字符串数组,而不是一个用逗号分隔的字符串。如果你说的是正确的用例删除猜测工作很容易。如果我想将字典分成两部分,第一部分包含123.png,而另一部分包含jellyish.jpg。你能保证数组中没有项目同时包含123和jellyish吗?在这种情况下,只需在123上运行两个过滤器,一个在另一个上运行。@SurajGupta处理多个图像的方式是错误的。你是应该有一个字符串数组,而不是一个用逗号分隔的字符串。如果你说的是你的确切用例,就很容易去掉猜测工作。