0

NSDictionary の配列があります。NSDictionary には、, で区切られた文字列を含む multiple_image キーという名前のキーがあります。

multiple_images キーの 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";
}
4

4 に答える 4

4

述語を使用して、

[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);
    }]];
于 2013-05-10T05:40:03.423 に答える
1

試す

NSDictionary *item = mainArray[0];

NSString *imagesString = item[@"multiple_images"];

NSArray *images = [imagesString componentsSeparatedByString:@","];

画像が使えるようになりました

于 2013-05-10T05:32:51.940 に答える
0

このコードを試してください

     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;
                }
            }
      }
于 2013-05-10T05:44:14.437 に答える
0

したがって、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];
        }
    }
}];
于 2013-05-10T05:44:26.117 に答える