从本地读取json文件

作者: funpig | 来源:发表于2015-02-07 11:18 被阅读7436次

    今天需要从本地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格式的文件!

    相关文章

      网友评论

        本文标题:从本地读取json文件

        本文链接:https://www.haomeiwen.com/subject/stbdxttx.html