0

私のアプリケーションでは、私は空を配置しました

  1. myFile.txt

インターネットに接続している場合、インターネットからjsonデータを取得し、次のコードを使用してjson文字列を保存します

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myFile" ofType:@"txt"];
[myString writeToFile:filePath automatically:YES encoding:NSUTF... error:nil];

//now while retrieving it when no internet connection
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myFile" ofType:@"txt"];
NSString *myString = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF..  error:nil];

myStringが次のように返され@""ます...なぜデータを書き込めないのですか?

よろしくお願いします

4

2 に答える 2

1

アプリバンドル内のファイルを更新することはできません(または少なくとも強くお勧めしません)。

ファイルをダウンロードしてデバイスに保存する場合は、Documentsディレクトリを使用する必要があります。このディレクトリへのパスは、次のコマンドで取得できます。

- (NSString *)getDocumentsDirectory {  
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
    return [paths objectAtIndex:0];  
} 
于 2012-12-13T17:57:19.307 に答える
0

まず、内容がファイルに書き込まれていることを確認します。ファイルは xcode で表示できます。私が提案するのは、アプリを実行するときにこの空のファイルを作成することです。その後、そのファイルを簡単に読み書きできます。

以下のコードを使用してみてください:

 NSError* error = nil;
 NSString* jsonFileName = [NSString stringWithFormat:@"myfile"];
 NSString* jsonPath = [[NSBundle mainBundle] pathForResource:jsonFileName    
    ofType:@"txt"];
 NSString* jsonString = [NSString stringWithContentsOfFile:jsonPath 
          encoding:NSUTF8StringEncoding error:&error];

ドキュメント ディレクトリ:

ファイルに書き込む

    NSArray *paths = NSSearchPathForDirectoriesInDomains
        (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    //make a file name to write the data to using the documents directory:
    NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", 
                                                  documentsDirectory];
    //create content - four lines of text
    NSString *content = @"One\nTwo\nThree\nFour\nFive";
    //save content to the documents directory
    [content writeToFile:fileName 
                     atomically:NO 
                           encoding:NSStringEncodingConversionAllowLossy 
                                  error:nil];

表示内容:

    NSArray *paths = NSSearchPathForDirectoriesInDomains
                    (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    //make a file name to write the data to using the documents directory:
    NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", 
                                                  documentsDirectory];
    NSString *content = [[NSString alloc] initWithContentsOfFile:fileName
                                                  usedEncoding:nil
                                                         error:nil];
于 2012-12-13T20:10:40.057 に答える