Использование ключа в ключе NSDictionary - PullRequest
4 голосов
/ 04 июня 2011

Я создаю приложение, в котором пользователь может щелкнуть название города в виде таблицы. Я идентифицирую имя, выбранное пользователем для соответствия ключу в NSDictionary.

Проблема заключается в том, что некоторые города имеют название в названии, поскольку приложение должно работать в Швеции.

NSDictionaries хранятся в plist-файле. Выглядит так:

{
    Göteborg = {
        name = "Göteborg";
        adress = "xxx";
        phone = "xxx";
    };

}

Как мне сделать эту работу? Я могу вспомнить несколько стратегий, которые я не знаю, как реализовать:

  1. Как-нибудь избежать выхода из файла в файле plist. Но как?

  2. В plist вместо Гетеборга я мог бы назвать ключ Гетеборгом, а в коде всегда обменивать å ä ö на a o o перед вызовом ключа в словаре. Но как мне это сделать, если я не собираюсь перебирать строку и создавать новую? Я предполагаю, что это возможно простым способом, например метод "поменяй все на о".

Это сообщение об ошибке, которое я получаю при попытке скомпилировать приложение:

English.lproj/factories.plist: Unexpected character { at line 1
Command /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist failed with exit code 1

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 04 июня 2011
Файлы формата

NSString и plist поддерживают Unicode, без каких-либо проблем. Вы не должны заботиться об использовании строк Unicode в NSDictionary.

Тем не менее есть две потенциальные проблемы с тем, что вы хотите сделать.

Вам может понадобиться нормализовать строки Unicode , когда вы добавляете их в качестве ключей и перед проверкой, находится ли ключ в диктонике.

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

2 голосов
/ 04 июня 2011

Это вполне возможно. Вставленное описание списка выглядит как вставка из браузера, отображающего его. Фактически, файлы .plist являются файлами .xml и должны создаваться таким же образом (массив словарей с заголовком Apple-plist), что и MyApplicationName-Info.plist в вашей группе ресурсов, а также должны быть в UTF-8 (чтобы избавиться от хлопот / загрузить с помощью f.ex. NSArray initWithContentsOf...).

Если бы я догадывался, я думаю, что plist генерируется сценарием в Интернете, а не сохраняется в UTF-8. Проверьте кодировку в текстовом редакторе на Mac или в Notepad ++.

Это, безусловно, вполне возможно, я делаю это весь день. :)

0 голосов
/ 19 декабря 2011

Используя Hex Editor, я обнаружил неправильные знаки, которые следовали, когда я копировал из Интернета.Удаление этих символов решило проблему.

...