2013-10-30 27 views
0

返回字典我有一個方法:- [NSDictionary dictionaryWithContentsOfFile]在iPad上返回零;在模擬器

#define ROOT_ASSETS_PATH @"/assets/" 

...

-(NSMutableDictionary*) getContentsOfPlist{ 
    NSString *pageContentPlistPath = [[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent: ROOT_ASSETS_PATH] stringByAppendingPathComponent:@"content.plist"]; 

    NSMutableDictionary *mDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:pageContentPlistPath]; 
    return mDicitonary; 
} 

在模擬器上。這會返回一個字典。在iPad上,它返回零。確保分機箱與通話中的相匹配。

任何想法?

+1

使用'[[NSBundle mainBundle] pathForResource:@「contents」ofType:@「plist]'。並且'contents.plist'可能被保留,您應該命名爲其他名稱 – Kevin

+0

只需使用該示例的名稱。在我的應用程序中有一個更加獨特的名字 –

+1

上的設備名稱區分大小寫,在模擬器上沒有,請仔細檢查, – Ultrakorne

回答

2

問題畢竟是個案。大小寫不匹配的情況下,我把參數。 OSX不在乎,但iPad確實如此。

0

嘗試刪除#define中的斜槓。 stringByAppendingPathComponent將爲你添加斜槓。不知道爲什麼這可以在模擬器中工作。

+0

我認爲它可以處理斜槓,但是我沒有在任何地方得到雙斜槓 –

0

而且它是好主意,用:

[NSPropertyListSerialization propertyListWithData:options:format:error:] 

而不是直接的NSDictionary初始化。如果有什麼會失敗,它應該會爲你返回一個很好的錯誤。

+0

問題畢竟是個案,但我會研究這個,我不知道這是一件事。 –

0
+ (id)dictionaryWithContentsOfFile:(NSString *)path 

參數

路徑

甲完整或相對路徑名。由路徑標識的文件必須包含 屬性列表的字符串表示形式,其屬性列表的根對象是 字典。

返回值

包含在路徑中的詞典,或者零,如果有 是文件錯誤或者如果該文件的內容是一個辭典的無效 表示一種新的字典。

所以,你必須設置一個完整路徑文件(或適當的相對路徑)

還要注意對模擬器的應用程序包是可讀寫的,但只讀設備上。

相關問題