从本地读取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格式的文件!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 5,331评论 0 6
  • 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭、安全的空间,叫做沙盒。它一...
    1d5cb7cff98d阅读 5,729评论 0 0
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,195评论 2 7
  • JSON JSON和XML都是需要解析的 JSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据...
    JonesCxy阅读 5,884评论 2 10

友情链接更多精彩内容