iPhone等待代码执行

时间:2010-02-03 17:01:34

标签: iphone

我正在创建一个用户按下按钮后运行的方法。该方法创建一个给定用户定义的名称的文件夹,并将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 个答案:

答案 0 :(得分:2)

createDirectoryAtPath:attributes:返回BOOL,因此在方法创建目录并返回之前代码不会进行。

我认为这种结构......

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

...很可能是你的问题。它通常会起作用,但更强大的方法是使用其中一种专用路径方法,例如:

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

这使得您更有可能获得正确的路径,特别是如果您只是更改了它。

您还应该捕获两个文件操作的布尔返回值,以便您可以看到哪个失败。