Разбор текстового файла с помощью Obj-C в iOS - PullRequest
0 голосов
/ 12 июля 2011

Я создаю приложение камертона.Вилка должна допускать до 12 предустановленных шагов.

Более того, я хочу, чтобы пользователь мог выбрать тему.Каждая тема будет загружать набор предустановок (необязательно использовать все из них).

Мой файл конфигурации будет выглядеть примерно так *:

(* конечно, я рад изменитьформат, чтобы упростить необходимый код, следует учитывать, что клиент будет создавать свой собственный файл вручную, поэтому я хочу избежать ненужных накладных расходов / запутывания)

theme: "A3"
comment: "An octave below concert pitch (ie A4 440Hz)"
presets: {
    A3 220Hz=220.0
}

// http://en.wikipedia.org/wiki/Guitar_tuning
theme: "Guitar Standard Tuning"
comment:"EADGBE using 12-TET tuning"
presets: {
    E2=82.41
    A2=110.00
    D3=146.83
    G3=196.00
    B3=246.94
    E4=329.63
}

theme: "Bass Guitar Standard Tuning"
comment: "EADG using 12-TET tuning"
presets: {
    E1=41.204
    A2=55.000
    D3=73.416
    G3=97.999
}

... которые должны бытьизвлекается в какую-то структуру, подобную этой:

@class Preset
{
    NSString* label;
    double freq;
}

@class Theme
{
    NSString* label;
    NSMutableArray* presets;
}

NSMutableArray* themes;

Какие у меня варианты?Как я могу достичь этого аккуратно?Кто-нибудь может указать мне на какой-нибудь соответствующий код?

(ПРИМЕЧАНИЕ: это НЕ дубликат другого вопроса с практически одинаковым названием, поэтому, пожалуйста, не отмечайте его только потому, что названия совпадают)

Ответы [ 2 ]

4 голосов
/ 12 июля 2011

я считаю список свойств xml самым простым во многих случаях.

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

разбирать это будет намного проще для вас. также, xcode проверит xml. xcode также может преобразовывать xml в двоичный файл при копировании в пакет, поэтому время для разбора / чтения / размера будет эффективным.

затем вы просто открываете его как NSDictionary и читаете valueForKey:, чтобы создать объект.

3 голосов
/ 12 июля 2011

Как насчет разбора JSON? код, который вы разместили, выглядит как json.

...