2013-12-12 46 views
0

當我調用[NSArray arrayWithContentsOfFile:]時,我得到零。arrayWithContentsOfFile和arrayWithContentsOfURL nil

NSURL *fileURL = [NSURL URLWithString:className relativeToURL:[self JSONDataRecordsDirectory]]; 
return [NSArray arrayWithContentsOfFile:[NSString stringWithFormat:@"%@", [fileURL path]]]; 

另外,我還獲得零當我打電話:

[NSArray arrayWithContentsOfURL:] 

我的所有文件的結果是JSON這裏: https://gist.github.com/neverbendeasy/03d047a6789b0ae14e1f

當我檢查fileURLs,該數據是那裏。

我錯過了什麼?

+0

fileURL呢?它是否爲零?看起來你正在使用本地文件,所以你應該使用+ [NSURL fileURLWithPath:isDirectory:]或+ [NSURL fileURLWithPath:]方法代替 – Russian

+0

@Russian是的,fileURL是非零(它在要點中有JSON輸出以上)。我試過fileURLWithPath,仍然有一個零數組。 :( – neverbendeasy

+1

等待,你是否嘗試初始化與JSON文件的內容數組?+ [NSArray arrayWithContentsOfFile:]只能用於plists – Russian

回答

5

無法使用NSArray arrayWith...加載JSON文件。該方法只能加載一個以數組爲根的plist文件。

如果你的文件是一個JSON文件,你應該使用:

NSData *jsonData = [NSData dataWithContentsOfURL:fileURL]; 
NSError *error = nil; 
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; 
if (jsonArray) { 
    // do something with jsonArray 
} else { 
    NSLog(@"Couldn't load JSON from %@: %@", fileURL, error); 
} 

這是假設JSON文件的頂層是一個數組。

+0

這工作。謝謝! – neverbendeasy

0

使用NSURL的

+ (id)fileURLWithPath:(NSString *)path 

+ (id)fileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir 

,而不是

+ (id)URLWithString:(NSString *)URLString 

與本地文件系統工作時。

+0

嘗試兩個,仍然得到零陣列。 – neverbendeasy