Можно ли одновременно читать plist из пакета приложений и папки с документами? - PullRequest
0 голосов
/ 26 февраля 2010

Возможно ли это? Читать из моего локального пакета и одновременно читать из папки документов в UItableview?

спасибо, спасибо

yes.simultaneously

Ответы [ 3 ]

0 голосов
/ 26 февраля 2010

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

0 голосов
/ 26 февраля 2010

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

Относительно файлов, к которым вы хотите получить доступ ...

Вот быстрый и грязный метод, который я использую в одном проекте (над которым я сейчас работаю):

NSFileManager* fileManager = [NSFileManager defaultManager];
NSError* error;
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
self.documentsDirectory = [paths objectAtIndex:0];
self.blahDBPath = [self.documentsDirectory stringByAppendingPathComponent: @"blah.db"];
NSLog(@"Mainbundle Resourcepath: %@", [[NSBundle mainBundle] resourcePath]);
NSString* defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"blah.db"];
NSLog(@"Default DB Path: %@", defaultDBPath);
success = [fileManager copyItemAtPath:defaultDBPath toPath:self.blahDBPath error:&error];
if (!success) {
    NSAssert1(0, @"blah blah blah '%@'.", [error localizedDescription]);
}

Это уродливо, но эффективно. Я перепишу его при рефакторинге приложения.

Дело в том, что я спрашиваю у операционной системы путь к определенным каталогам. Затем я добавляю имена файлов или подкаталоги по мере необходимости. Это позволяет операционной системе управлять путями (как в симуляторе, где каждая последующая сборка получает новый уникальный идентификатор как часть своего пути), и я просто беспокоюсь об окончательных каталогах и именах файлов в приложении. Когда у меня есть пути, я копирую требуемый файл из каталога комплектов и помещаю их куда-нибудь, в данном случае в каталог документов. Тогда я могу делать с ними все, что мне нужно. Если я просто хотел получить доступ к ним, как они есть в каталоге пакета, то я просто ссылаюсь на них, используя [[NSBundle mainBundle] resourcePath].

Я думаю, что что-то вроде приведенного выше фрагмента - это то, что вы ищете.

-isdi-

0 голосов
/ 26 февраля 2010

Нет - так как в iPhone нет многоядерности, вы не можете иметь «одновременный»: p

Да - так как вы можете открыть несколько файлов за один и тот же период времени. Конфликтов нет, если файлы разные (если файлы одинаковые, это зависит от того, как другие используют и блокируют файл и т.

...