2012-10-30 48 views
0

我想創建一個plist文件,我會寫在稍後在我的應用程序。在第一viewDidLoad中我把下面的方法創建一個plist文件的iOS不工作

-(void)createFavoritesFile{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSError *error; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *documentDBFolderPath = [documentsDirectory stringByAppendingPathComponent:@"data.plist"]; 

    if (![fileManager fileExistsAtPath:documentDBFolderPath]) 
    { 
     NSLog(@"file doesnt exist"); 
     NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"data.plist"]; 
     [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error]; 
    } 
    else{ 
     NSLog(@"file exists"); 
    } 
} 

但是我每次運行應用程序時,我無法找到創建的文件,如果我關閉應用程序並重新打開,的NSLog顯示文件犯規再次存在。我錯過了什麼嗎?

回答

1

您忽略了來自-copyItemAtPath:toPath:error:的返回值和錯誤。我敢打賭,該電話正在返回NO並填充一些錯誤。你應該檢查它的返回值,如果它返回NO,則輸出錯誤。

爲什麼這樣做失敗的一個可能的原因是你可能實際上並沒有一個Documents文件夾,出於某種原因。你可以問NSFileManager爲你創建它。

+0

如何檢查返回值。我檢查了路徑有一個文件夾,但沒有文件 – JeffN

+0

BOOL成功= [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error];如果(成功){//工作}其他{//NSLog的(@「錯誤:%@」,[錯誤localizedDescription]}; – yeesterbunny

+0

它不是創建該文件,因此該文件不會複製。讓它檢查文件是否存在,如果不存在,則創建該文件 – JeffN

0

打印您的資源路徑,看看文件是否存在。如果是這樣,但不工作檢查這個問題:Working with paths from [[NSBundle mainBundle] resourcePath]

無論如何,如果你的資源是你的主束,你可以隨時使用:

- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension 
+0

該文件不存在於該路徑中任何想法爲什麼? – JeffN

+0

它是否被複制到你的包中?你可以檢查它' Project> Target> Build Phases> Copy Bundle Resources' – atxe

+0

它沒有創建文件,因此該文件不會複製。修復了只檢查文件是否存在的問題,如果不存在,那麼它創建文件。 – JeffN