無法理解,爲什麼此行代碼返回(null)
?iOS中的pathForResource爲空
// Get path of data.plist file to be created
plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
我需要創建新的plist,但無法理解,不空文件應該被創建之前得到它的路徑。任何想法?
PS我現在只有h,m和沒有plist文件。
無法理解,爲什麼此行代碼返回(null)
?iOS中的pathForResource爲空
// Get path of data.plist file to be created
plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
我需要創建新的plist,但無法理解,不空文件應該被創建之前得到它的路徑。任何想法?
PS我現在只有h,m和沒有plist文件。
部署後,您不會在您的包中創建新文件。該軟件包包含您的應用程序附帶的所有資源和文件。
而是在應用程序的「文檔」文件夾中創建新文件。要獲取的文件夾路徑,您可以使用這樣的方法(如包括在一些應用程序模板項目):
- (NSString *)applicationDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
然後你只需添加你要使用的文件名。
NSString *path = [self applicationDocumentsDirectory];
path = [path stringByAppendingPathComponent:@"data.plist"];
爲了組織的目的,您可能還想在「文檔」文件夾中增加一些文件夾。你可以使用NSFileManager
來做到這一點。
是的,你的猜測是對的 - 你需要先創建一個文件。下面是類的參考文檔說的話有關方法的返回值
「返回值 的完整路徑名的資源文件或零如果文件不能定位。」
你可以這樣做類似於:
if ([ [NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"])
plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
else
// Create new file here
另外,如果您要搜索唯一文件名,則可以省略上面方法調用中的類型extenxion。
應該沒有必要檢查是否可以在捆綁包中找到文件。既然你知道它應該在那裏,因爲你只能添加文件到主包添加編譯時間。運行應用程序時,只能讀取一個文件,不能只顯示在那裏。 – rckoenes
只需添加到這個正確答案,也可以不在'mainBundle'修改任何文件。 iOS上應用程序包中的所有文件都是隻讀的。 – rckoenes