2016-08-29 8 views
0

Привет У меня есть NSMutableDictionary как этотКак найти значение для определенного ключа в NSMutableArray из NSMutableDictionaries?

<__NSArrayM 0x14e226ff0>(
{ 

DocumentName = "IMG_2597.JPG"; 
DocumentType = JPG; 
Image = "<UIImage: 0x14e52c370> size {1239, 1242} orientation 0 scale 1.000000"; 

} 

Я добавляю несколько объектов в мой NSMutablearray. Но я хочу проверить, доступно ли это изображение в NSMutablearray. На самом деле я планирую его искать по адресу DocumentName. Как проверить, существует ли такое же значение для ключа DocumentName в массиве. Я хочу добавить NSMutableDictionary, если только его еще не существует. Вот как я создаю свой объект NSMutabledictionary.

NSMutableDictionary *imageDictionary=[[NSMutableDictionary alloc] init]; 
[imageDictionary setObject:chosenImage forKey:@"Image"]; 
[imageDictionary setValue:strDocNAme forKey:@"DocumentName"]; 
[imageDictionary setValue:strExtension forKey:@"DocumentType"]; 
[mutarrayImages addObject:imageDictionary]; 

Пожалуйста, помогите мне. Thanks

ответ

2

Вы можете попробовать один из них, чтобы проверить изображение уже существует или нет.

1) Использование предиката

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"DocumentName = 'IMG_2597.JPG'"]; 
NSArray *arr = [yourArray filteredArrayUsingPredicate:predicate]; 
if (arr.count > 0) { 
    NSLog(@"Object is contain"); 
} 

2) Использование valueForKey

NSArray *documentName = [yourArray valueForKey:@"DocumentName"]; 
if ([documentName containsObject:@"IMG_2597.JPG"]) { 
    NSLog(@"Object is contain"); 
} 
+0

мой массив может иметь несколько NSDictionaries. Это набор словарей. Так что я могу получить прямой доступ, например [arr containsObkect: @ "IMG_2597.JPG"] не нужно указывать путь указателя? – Irrd

+0

Спасибо. Это сработало :) – Irrd

0
NSArray *allObjectsArray; // your array 

NSMutableArray *resultObjectsArray = [NSMutableArray array]; 
for(NSDictionary *dict in allObjectsArray) 
{ 
    NSString *docName = [dict objectForKey:@"DocumentName"]; 
    NSRange range = [docName rangeOfString:@"your string which you want to match" options:NSCaseInsensitiveSearch]; 
    if(range.location != NSNotFound) 
     [resultObjectsArray addObject:dict]; 
} 
1
NSSet* myValuesSet = [NSSet setWithArray: [mutarrayImages valueForKey:@"DocumentName"]]; 
if ([[myValuesSet allObjects] containsObject:< DocumentName to compare >]) { 
    NSLog(@"Exist"); 
} 
else{ 
    NSLog(@"Does not exist"); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^