代码之家  ›  专栏  ›  技术社区  ›  Jack

iPhone等待代码执行

  •  0
  • Jack  · 技术社区  · 14 年前

    我正在创建一个方法,该方法在用户按下按钮后运行。该方法根据用户定义的名称创建一个文件夹,并向该文件夹添加一个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 回复  |  直到 14 年前
        1
  •  2
  •   TechZen    14 年前

    createDirectoryAtPath:attributes: 返回一个bool,这样在方法创建目录并返回之前代码不会继续。

    我觉得这个建筑…

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

    …很可能是你的问题。它通常可以工作,但更健壮的方法是使用一种专用的路径方法,例如:

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

    这使您更有可能获得正确的路径,尤其是如果您刚刚更改了路径。

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