2

ドキュメントベースのアプリケーションでは、ファイルを保存/読み取ることができますが、純粋なプレーンテキストファイルから読み取る必要がある場合に問題が発生します。
私は読み書きする文字列しか持っていないので、それがコードです:

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{
    code=[codeView string];
    return [NSKeyedArchiver archivedDataWithRootObject: code];
}

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
{
    code=[NSKeyedUnarchiver unarchiveObjectWithData: data];
    return YES;
}

問題は、NSData を保存すると、次のようなファイルが生成される可能性があることです。

bplist00‘X$versionX$objectsY$archiverT$top�܆£
U$null“ 
V$classYNS.stringÄP“Z$classnameX$classes_NSMutableString£XNSStringXNSObject_NSKeyedArchiver—TrootÄ#-27;AFMWYZ_jsÖâíõ≠∞µ����������������������������∑

人間には判読できず、テキスト編集などの他のアプリケーションにも判読できません。プレーン テキスト ファイルを読み取って保存できるようにする必要があります。plist ファイルで、ドキュメント タイプ名を public.text に変更することで、これを達成しようとしました。
UTF-8 でエンコードされた純粋な文字列を保存/読み取るにはどうすればよいですか?

4

2 に答える 2

3

そのgobbledygookはNSKeyedArchiverの出力です。ここではアーカイバは必要ありません。代わりに、文字列にdataUsingEncoding:.

于 2012-11-07T17:47:23.983 に答える
1

@RamyAlZuhouri: 「TextEdit」プロジェクト (Apple Code-Example) の「Info-TextEdit.plist」ファイルの「ドキュメント タイプ」を確認してください。

おそらくここ: ~/Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleOSX10_8.CoreReference.docset/Contents/Resources/Documents/samplecode/TextEdit

于 2012-11-07T21:53:29.263 に答える