2010-07-30 84 views
0

我有這個簡單的方法來返回文件路徑。我傳遞文件名作爲參數。然後當我調用這個方法時,如果在設備上運行,該方法返回'null',但在模擬器上正常工作。有什麼我做錯了嗎?NSString被返回爲'null'

-(NSString*) getFilePathForFile:(NSString*)fileName 
{ 
    NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [array objectAtIndex:0]; 
    NSString *temp = [documentsDirectory stringByAppendingPathComponent:fileName]; 
    return temp; 
} 

NSString *path = [self getFilePathForFile:@"settingInfo.plist"] 

任何幫助,將不勝感激。 謝謝

+0

你有沒有在調試器中通過這種方法?當然你可以更清楚地知道哪裏出了問題? – 2010-07-30 06:06:23

+0

我會添加一些'NSLog'來查看事物橫向的位置。 NSLog(@「fileName =%@」,fileName);','NSLog(@「array =%@」,array);'''NSLog(@「documentsDirectory =%@」,documentsDirectory);' NSLog(@「temp =%@」,temp);'應該向你顯示你的問題到底在哪裏。這將使得找出修復更容易。 – theMikeSwan 2010-07-30 06:12:45

+0

我已經嘗試過NSLog,並且當我們在方法內部時它確實打印了一切,但是當返回值時,它返回null。我不明白爲什麼? – Ideveloper 2010-07-30 06:28:05

回答

0

這聽起來像某種內存管理問題。您是否嘗試過使用「構建和分析」來查看Xcode是否可以解決任何內存問題?

否則,試試這個,看看你得到的東西非空:

NSString *path = [[self getFilePathForFile:@"settingInfo.plist"] retain]; 
0

該方法可能會失敗,而不是拋出一個例外是,如果通過NSSearchPathForDirectoriesInDomains返回的數組是零的唯一途徑。檢查是否正在返回一個有效的數組。