2009-04-14 22 views
1

アプリケーションの実行中に特定の情報を保存し、アプリケーションの起動時に再び取得する必要があります。私はGDataを使用してXMLに格納しようとしましたが、成功しませんでした。 NSFileHandleを使用してもエラーは出ませんが、読み書きのために.txtファイルを作成することはできません。 iPhoneにデータを保存して取得する他の方法はありますか?以下はNSFileHandleのコードです。iPhone永続的ストレージ

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFile.txt"]; 
//NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:@"file://localhost/Users/shraddha/Desktop/info.txt"]; 
NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:@"myFile.txt"]; 
[fh seekToEndOfFile]; 
NSData *data = [camName dataUsingEncoding:NSASCIIStringEncoding]; 
[fh writeData:data]; 
[fh closeFile]; 

読書

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFile.txt"]; 
//NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"file://localhost/Users/shraddha/Desktop/info.txt"]; 
NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"myFile.txt"]; 
if(fh == nil) 
    return nil; 
else 
{ 
    NSData *data = [fh readDataOfLength:8]; 
    NSString *retStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
    return retStr; 
} 

答えて

10

あなたはおそらく権限のないリソースディレクトリに書き込もうとしています。

NSArray *savePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSMutableString *savePath = [NSMutableString stringWithString:[savePaths objectAtIndex:0]]; 
[savePath appendString:@"/myFile.txt"]; 

また、ファイルハンドルについて心配する必要はありません。 NSDataは、ディスクに自身を書き込むことができます。

BOOL result = [data writeToFile:savePath atomically:YES]; 
3

すべてのiPhoneアプリは、その処分で/書き込み格納するための非常に、非常に便利です名前/値のペアを読み取る能力を持っていますユーザーの好みのような小さな情報。これらのプリファレンスは、アプリケーションのユーザーによって編集することもできます(選択した場合)。

テキストファイルの保存と検索(特にこのオプションが気に入らなかった、特にiPhoneでの偽のXML解析サポート)の方が堅牢であるという別のオプションはsqliteです。 sqliteは、すべてのiPhoneとiPod touchに付属しているとても軽量なリレーショナルデータベースエンジンです。

関連する問題