今天需要從本地Resource文件夾里讀取json文件仔役,發(fā)現(xiàn)用如下代碼有問題:
- 代碼一
NSString *path = [self pathForLocationsDataFile];
locationDict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
// locationDict一直為nil
剛開始一直以為路徑下沒有對應(yīng)的json文件掷伙,后來跑到.app路徑下看,json文件的確存在炎咖。
后來改用如下代碼,ok了
- 代碼二
NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"divesite" ofType:@"json"];
NSData *data=[NSData dataWithContentsOfFile:jsonPath];
NSError *error;
id jsonObject=[NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingAllowFragments
error:&error];
但是寒波,如果你在代碼里面創(chuàng)建一個Dictionary對象乘盼,用代碼三的方法把它寫到本地文件里,在從文件里把它讀出來是可以的俄烁。
- 代碼三
- (NSString *) pathForDataFile {
NSArray* documentDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* path = nil;
if (documentDir) {
path = [documentDir objectAtIndex:0];
}
return [NSString stringWithFormat:@"%@/%@", path, @"test.bin"];
}
- (void) saveDataToDisk:(NSMutableDictionary*)dict
{
NSString * path = [self pathForDataFile];
if (dict == nil) {
return;
}
[dict writeToFile:path atomically:YES];
}
- (NSMutableDictionary*) loadDataFromDisk
{
NSString * path = [self pathForDataFile];
NSMutableDictionary * rootObject = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
if (rootObject == nil) {
rootObject = [[NSMutableDictionary alloc] initWithCapacity:0];
}
return rootObject;
}
我決定去看看test.bin長啥樣绸栅?test.bin竟然是xml的格式,難怪使用
NSMutableDictionary * rootObject = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
的方式不能讀取一個json格式的文件页屠!