2015-03-22 2 views
-2

Нужно быть слепым, чтобы не видеть разницу с вышеуказанным вопросом.NSArray получить весь объект из значения ключа

У меня есть NSArray как

[ 
    { 
     "NAME": "MyProduct1", 
     "UUID": 4 
    }, 
    { 
     "NAME": "MyProduct2", 
     "UUID": 10 
    }, 
    { 
     "NAME": "MyProduct3", 
     "UUID": 18 
    }, 
... 
] 

Теперь с определенным идентификационным номером, я хотел бы получить словарь, содержащий только заинтересованный продукт. Так с ID = 18 было бы:

{ 
    "NAME": "MyProduct3", 
    "UUID": 18 
} 

Я пытаюсь найти элегантное решение, учитывая каждый UUID является уникальным в массиве.

+0

Это вовсе не тот же самый вопрос. Речь идет о получении NSArray из другого NSArray с возможными повторяющимися значениями, здесь мы говорим о получении NSDictionary из единственного (и уникального, см. UUID) значения. – kursus

+0

Здесь можно приветствовать любую аргументацию. – kursus

+0

Ребята с большой силой приходят с большой ответственностью. В следующий раз внимательно прочитайте. – kursus

ответ

4

Вы можете использовать NSPredicate

NSArray *myArray = @[ 
    @{ 
     @"NAME": @"MyProduct1", 
     @"UUID": @4 
    }, 
    @{ 
     @"NAME": @"MyProduct2", 
     @"UUID": @10 
    }, 
    @{ 
     @"NAME": @"MyProduct3", 
     @"UUID": @18 
    } 
]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UUID == 18"]; 
NSArray *filteredArray = [myArray filteredArrayUsingPredicate:predicate]; 
id firstFoundObject = filteredArray.firstObject; 
NSLog(@"Result: %@", firstFoundObject); 

И результат:

2015-03-22 17:15:06.468 Untitled[23770:2311273] Result: { 
    NAME = MyProduct3; 
    UUID = 18; 
} 

, как описано здесь: How to search an NSSet or NSArray for an object which has an specific value for an specific property?

+0

Спасибо, но это не сработает, возможно, потому что в каждом объекте есть несколько свойств. – kursus

+0

@kursus Это действительно работает - см. Мой обновленный ответ. Если результат не тот, что вы хотели? –

+0

Действительно, это работает. Извините, спасибо! – kursus

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