iPhone: Как написать массив списков объектов словаря - PullRequest
0 голосов
/ 19 апреля 2010

Я молодой итальянский разработчик для iPhone. У меня есть файл plist (с именем "Frase") с такой структурой:

Root Array
 - Item 0         Dictionary
      Frase        String
      Preferito    Bool
 - Item 1         Dictionary
      Frase        String
      Preferito    Bool
-  Item 2         Dictionary
      Frase        String
      Preferito    Bool
 - Item 3         Dictionary
      Frase        String
      Preferito    Bool
exc.

Массив, содержащий много элементов словаря, все те же, состоящие из "Frase" (строка) и "Preferito" (BOOL).

Переменная «indirizzo», увеличивает или уменьшает нажатие кнопки «Далее» или «Назад». Интерфейс приложения:

http://img691.imageshack.us/img691/357/schermata20100418a20331.png

Когда я нажимаю кнопку AddPreferito, пункт «Preferito» должен быть ДА. Впоследствии массив должен быть обновлен новым словарем. Код:

(void)addpreferito:(id)sender {

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Frase" ofType:@"plist"];
MSMutableArray *frase = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];
NSMutableDictionary *dictionary = [frase objectAtIndex:indirizzo];
[dictionary setValue: YES forKey:@"Preferito"];
[frase replaceObjectAtIndex:indirizzo withObject:dictionary];
[frase writeToFile:plistPath atomically:YES];

}

Почему бы не работать? Спасибо Спасибо Спасибо!

Ответы [ 2 ]

1 голос
/ 19 апреля 2010

То, что сказал Джейсон, правильно, но похоже, что в вашем коде есть еще одна, более серьезная проблема: кажется, что вы передаете примитивное значение (определенная константа YES ) в качестве первого аргумента -setValue:forKey:, который ожидает аргумент типа id (другими словами, объект, а не примитив).

Вместо этого вы можете использовать экземпляр NSNumber для переноса логического значения, а затем поместить его в массив, например:

[dictionary setValue:[NSNumber numberWithBool:YES] forKey:@"Preferito"];
0 голосов
/ 19 апреля 2010

Вы загружаете исходный список из вашего пакета приложений. К сожалению, вы не можете писать в этот каталог. Когда вам нужно это проверить, существует ли ваш plist в каталоге пользовательских документов. Если это так, загрузите его оттуда. Если нет, загрузите ваш шаблон (оригинал) из комплекта приложения. Когда вы записываете файл обратно, вы всегда должны записывать его в каталог пользовательских документов.

Для получения дополнительной информации об управлении файлами вашего приложения см. Раздел Управление файлами и данными Руководство по программированию приложений для iPhone .

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