Инициализировать массивы и словари с большим количеством значений - PullRequest
0 голосов
/ 16 марта 2012

Мне нужно иметь возможность инициализировать массивы в моем исходном коде с некоторыми предопределенными значениями, которые выглядят примерно так, как показано ниже.Однако каждый массив может иметь тысячи значений.

@"key",@"value",
@"key",@"value",
@"key",@"value",
@"key",@"value",
...etc...

Как мне инициализировать (например) NSDictionary с этими значениями без необходимости иметь тысячи значений, встроенных в мой исходный код, т.е.что-то вроде этого:

tokens = [[NSDictionary alloc] initWithObjectsAndKeys:
    #import "keyvaluepairs1.h"
    #import "keyvaluepairs2.h"
    , nil];

или даже просто чистый массив, подобный этому:

char[] tokens = {
    #import "schoolnames.h"
    #import "universitynames.h"
    }

То, что я ищу, это не "фокус" цели-с, а скореепонимание того, как вы можете дать указание компилятору импортировать или всасывать содержимое других файлов.Я открыт для других идей о том, как этого добиться, если потребуется.

Ответы [ 3 ]

3 голосов
/ 16 марта 2012

Вы можете создать список, который является NSDictionary NSArrays.Затем легко считайте plist в NSDictionary и затем извлекайте каждый массив из него.

 NSString *path = [[NSBundle mainBundle] pathForResource:@"yourFile" ofType:@"plist"];
 NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
 NSArray *array = [dict objectForKey:@"array1"];

Как указывалось, это необходимо будет прочитать по крайней мере один раз каждый раз, когда приложение загружается из «не запущенного»'state

0 голосов
/ 16 марта 2012

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

#define  SAMPLE_ARRAY \
@"a",   @"value",\
@"b",   @"value",\
@"c",   @"value",\
...etc...

И затем импортируйте или используйте их так:

tokens = [[NSDictionary alloc] initWithObjectsAndKeys:
    SAMPLE_ARRAY
    SAMPLE_ARRAY2
    nil];

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

0 голосов
/ 16 марта 2012

Если ваш текстовый файл в формате, который вы показываете выше, вам нужно написать простой парсер, чтобы прочитать данные в NSDictionary.

Поскольку формат «словарь» прост, линейный синтаксический анализатор, основанный на NSScanner, будет легко реализовать.

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