從本地讀取json文件

今天需要從本地Resource文件夾里讀取json文件,發現用如下代碼有問題:

  • 代碼一
NSString *path = [self pathForLocationsDataFile];
locationDict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
// locationDict一直為nil

剛開始一直以為路徑下沒有對應的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];

但是,如果你在代碼里面創建一個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格式的文件!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666閱讀 1,439評論 0 6
  • 一、iOS中的沙盒機制 iOS應用程序只能對自己創建的文件系統讀取文件,這個獨立、封閉、安全的空間,叫做沙盒。它一...
    1d5cb7cff98d閱讀 1,787評論 0 0
  • iOS開發系列--網絡開發 概覽 大部分應用程序都或多或少會牽扯到網絡開發,例如說新浪微博、微信等,這些應用本身可...
    lichengjin閱讀 3,721評論 2 7
  • JSON JSON和XML都是需要解析的 JSON是一種輕量級的數據格式,一般用于數據交互服務器返回給客戶端的數據...
    JonesCxy閱讀 1,877評論 2 10