我正在创建一个用户按下按钮后运行的方法。该方法创建一个给定用户定义的名称的文件夹,并将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];
}
答案 0 :(得分:2)
createDirectoryAtPath:attributes:
返回BOOL,因此在方法创建目录并返回之前代码不会进行。
我认为这种结构......
[NSString stringWithFormat:@"%@/%@/info.plist", DOCUMENTS_FOLDER, theTitle]
...很可能是你的问题。它通常会起作用,但更强大的方法是使用其中一种专用路径方法,例如:
[NSString pathWithComponents:[NSArray arrayWithObjects:DOCUMENTS_FOLDER, theTitle,@"/info.plist",nil]]
这使得您更有可能获得正确的路径,特别是如果您只是更改了它。
您还应该捕获两个文件操作的布尔返回值,以便您可以看到哪个失败。