jsonファイルをローカルから読み込む

2002 ワード

今日はローカルResourceフォルダからjsonファイルを読み込む必要がありますが、次のコードで問題があります.
  • コード1
  • NSString *path = [self pathForLocationsDataFile];
    locationDict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
    // locationDict   nil
    

    最初はパスの下に対応するjsonファイルがないと思っていたが、走って行った.appパスの下で見ると、jsonファイルは確かに存在します.
    その後、次のコードに変更され、okになりました.
  • コード2
  • 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オブジェクトを作成する場合は、コード3の方法でローカルファイルに書き、ファイルから読み出すことができます.
  • コード三
  • - (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形式のファイルを読み取ることはできません!