iPhone подождать пока код не будет выполнен - PullRequest
0 голосов
/ 03 февраля 2010

Я создаю метод, который запускается, когда пользователь нажимает кнопку. Метод создает папку с именем, определенным пользователем, и добавляет в эту папку plist. Проблема в том, что он не создает plist. Я знаю, что код работает отдельно, но я думаю, что создание plist выполняется до создания каталога. Есть ли способ добавить предложение «подожди»? Спасибо

- (void) addTheDirectory{
NSString *theTitle = theTitleField.text;
NSString *theDescription = theDescriptionField.text;

//create the directory
[[NSFileManager defaultManager] createDirectoryAtPath:[NSString stringWithFormat:@"%@/%@", DOCUMENTS_FOLDER, theTitle] attributes:nil];

//create the plist
NSMutableDictionary* plistDictionary = [[NSMutableDictionary alloc] init];
[plistDictionary setValue:theTitle forKey:@"Title"];
[plistDictionary setValue:theDescription forKey:@"Description"];
[plistDictionary setValue:@"0.1" forKey:@"LBVersion"];
[plistDictionary writeToFile:[NSString stringWithFormat:@"%@/%@/info.plist", DOCUMENTS_FOLDER, theTitle] atomically: YES];
}

1 Ответ

2 голосов
/ 03 февраля 2010

createDirectoryAtPath:attributes: возвращает BOOL, поэтому код не будет выполняться, пока метод не создаст каталог и не вернется.

Я думаю, что эта конструкция ...

[NSString stringWithFormat:@"%@/%@/info.plist", DOCUMENTS_FOLDER, theTitle]

... скорее всего ваша проблема. Обычно это работает, но более надежный метод - использовать один из методов выделенного пути, например:

[NSString pathWithComponents:[NSArray arrayWithObjects:DOCUMENTS_FOLDER, theTitle,@"/info.plist",nil]]

Это повышает вероятность того, что вы получите правильный путь, особенно если вы только что изменили его.

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

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