NSPredicate получить значения NSDictionary, выбрав ключи с Beginswith


Я должен управлять этой уродливой структурой xml. Как я могу запросить все ключевые Теги, начинающиеся с / содержит "ключ"?

Xml-Структура:

<Data>
    <Rec>
       <Key1>0001</Key1>
       <Key2>0015</Key2>
       <Key3>0002</Key3>
       <Key4>0022</Key4>
       ...              
    </Rec>
    <Rec>
       <Key1>0015</Key1>
       <Key2>0022</Key2>
       <Key3>0002</Key3>
       <Key4>0001</Key4>
       ...              
    </Rec>
    ...
</Data>

Rec-Объект-Структура:

@interface Rec : NSObject
@property (nonatomic, copy) NSMutableDictionary *content;
@end

Вот мой код, который работает, чтобы выбрать на Key1:

predicateRecs = [NSPredicate predicateWithFormat:@"content.%K == %@", @"Key1", @"0001"];

[result addObjectsFromArray:[recs filteredArrayUsingPredicate: predicateRecs]];

Recs является типом NSArray и содержит Rec-объекты. %K должен уметь делать что-то вроде: content.@allKeys BEGINSWITH %@ == %@ ,@"ключ", @"0001"`

Я хочу получить ключи alls со значением, например, 0001 Как я могу это сделать ?

Спасибо

1 2

1 ответ:

Я бы на основе ваших комментариев использовал подзапрос тогда:

predicateRecs = [NSPredicate predicateWithFormat:@"SUBQUERY(FUNCTION(SELF, 'allKeys'), $k, SELF[$k] beginswith[cd] %@ AND SELF[$k] == %@).@count > 0", @"Key",@"0001"];

Дейв Делонг-мастер предикатов: http://www.mactech.com/sites/default/files/Dave_DeLong-Power_Of_Predicates.pdf

И конечно же: https://stackoverflow.com/a/5570510/312312