Мне нужно выбрать истории из NSArray XML, сопоставив строку из элемента XML со списком строк в другом NSArray
XML содержит истории, у каждой истории есть три критерия, скажем «Fruit»'Veg', 'Spice', каждая из которых содержит одну фразу.Пример истории может выглядеть следующим образом:
<story>
<title>I love cooking</title>
<fruit>Oranges</fruit>
<veg>Cauliflower</veg>
<spice>Mixed spice</spice>
<blurb>losts of text and stuff....</blurb>
</story>
У меня есть три словаря пар ключ / значение в NSMutableDictionary, сгенерированных из списка pList
<Fruit:dictionary>
'Ripe bananas' : 1
'Green bananas' : 0
<Veg:dictionary>
'Green beans' : 1
'Cauliflower' : 0
<Spice:dictionary>
'Nutmeg' : 1
'Mixed spice' : 0
Я не знаю, какие ключи будутбыть, и мне нужно сопоставить тег в истории с ключами.
то есть тег фрукта истории: 'Спелые бананы' СООТВЕТСТВУЕТ 'Спелые бананы' в списке ключей фруктов
Я могу построитьтри массива ключей, используя
NSMutableDictionary *fruitTagsDict = [prefsDictionary objectForKey:@"Fruits"];
NSArray *fruitTags = [fruitTagsDict allKeys];
Я перебираю историю XML, извлекая тег
for (id myArrayElement in storyArray) {
NSString *fruitString = [NSString stringWithString:[myArrayElement fruit]];
//BOOL isTheObjectThere = [issueTags containsObject:fruitString];
NSString *vegString = [NSString stringWithString:[myArrayElement veg]];
NSString *spiceString = [NSString stringWithString:[myArrayElement spice]];
//if ([[fruitTags objectAtIndex:row] isEqualToString:fruitString]) {
//NSLog(@"Yo %@", fruitString);
// ADD TO A NEW ARRAY OF MATCHING STORIES
//}
// Fails because row is undeclared
}
Затем начинаю застеклять.
Строка isTheObjectThere производитЗатем nil падает в конце цикла
Я смотрел: Отфильтровывать целые NSDictionaries из NSArray на основе нескольких ключей Выполнение проверки кода, чтобы увидеть, является ли текст в текстеполе соответствует любой из строк в NSArray
Кажется, предикат - это ответ, но, честно говоря, я запутался.
Что мне нужно сделать в метакоде
repeat with stories
if storyFruitTag is in fruitTagArray
OR storyVegTag is in vegTagArray
OR storySpiceTag is in spiceTagArray
Add to new array of matching stories
Надеюсь, я объяснил достаточно, чтобы получить несколько указателей,Я изучил NSMutableSet и Intersect ( XCode: сравните два NSMutableArrays ), но сила слишком большого количества информации досталась мне