2012-05-30 51 views
0

我想運行一些示例代碼,並且無法創建並保存到文件。麻煩創建並保存到Xcode中的文件

這裏是我的代碼:

-(IBAction) example 
{ 
    NSFileManager *fm = [[NSFileManager alloc] init]; 
    NSURL *docsurl = [fm URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil]; 
    myfolder = [docsurl URLByAppendingPathComponent:@"MyFolder"]; 
    NSError * err = nil; 
    BOOL ok = [fm createDirectoryAtURL:myfolder withIntermediateDirectories:YES attributes:nil error:&err]; 
    ok = [label.text writeToURL:myfolder atomically:YES encoding:NSUTF8StringEncoding error:nil];  
} 

-(IBAction) load 
{ 
    label2.text = [[NSString alloc] initWithContentsOfURL:myfolder 
    encoding:NSUTF8StringEncoding error:nil]; 
} 

我希望它的第一個標籤的文本保存到文件時,我按下第一個按鈕。當我按下第二個按鈕時,我希望它讀取文件中的內容並製作第二個標籤文本。但是,當我按下第二個按鈕時,第二個標籤只是空白。 有什麼建議嗎?

+0

您似乎沒有檢查您調用的任何方法的結果。他們有沒有成功? 'ok'的價值是什麼? 'docsurl'是否以斜線結尾?例如,在追加'MyFolder'之前,你需要追加一個嗎? – user1118321

回答

0

我建議實際使用這些NSError對象。我也建議使用默認的NSFileManager。

-(IBAction) example 
{ 
    NSFileManager *fm = [NSFileManager defaultManager]; 
    NSError *error; 
    NSURL *docsurl = [fm URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:&error]; 
    myfolder = [docsurl URLByAppendingPathComponent:@"MyFolder"]; 
    NSError * err = nil; 

    if ([fm createDirectoryAtURL:myfolder withIntermediateDirectories:YES attributes:nil error:&err]) { 
     if ([label.text writeToURL:myfolder atomically:YES encoding:NSUTF8StringEncoding error:&err]) { 

     } 
     else { 
      NSLog(@"%@", err); 
     } 
    } 
    else { 
     NSLog(@"%@", err); 
    } 


} 

-(IBAction) load 
{ 
    NSError *err; 
    if ([[NSString alloc] initWithContentsOfURL:myfolder 
    encoding:NSUTF8StringEncoding error:&err]) { 
     label2.text = [[NSString alloc] initWithContentsOfURL:myfolder 
    encoding:NSUTF8StringEncoding error:nil]; 
    } 
    else { 
     NSLog(@"%@", err); 
    } 
} 

此代碼不能作爲是工作,但它會打印出您遇到任何錯誤,它會幫助你解決問題。

+0

我試着運行你的代碼,當我按下示例按鈕時得到的輸出是:2012-05-31 17:53:05.927示例[3068:10703]錯誤域= NSCocoaErrorDomain代碼= 512「操作無法完成。(Cocoa error 512.)「UserInfo = 0x7549230 {NSFilePath =/Users/rawsonhunter/Library/Application Support/iPhone Simulator/5.0/Applications/2E92DC0F-94F0-41ED-AE47-0A2EB7FAE2DF/Documents/MyFolder,NSUnderlyingError = 0x7548ce0」The操作無法完成。是一個目錄「} –

+0

好吧,這是有道理的。這是說你正在嘗試寫入一個目錄。看看代碼。你首先用myfolder URL創建文件夾。然後,您嘗試將文件寫入相同的URL。您必須創建一個代表文件的新URL。 – sosborn