0

次のように、NSKeyedArchiver から NSString を抽出しようとしています。

NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *coder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[coder encodeInt:1 forKey:@"myField"];
[coder finishEncoding];

NSString *myString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", myString);

問題は、myString が nil であることです (NSLog は '(null)' を出力します)。上記のコードの何が問題になっていますか?

私が読んだ他の投稿では、これは通常、エンコーディングが間違っていることが原因であると述べています (つまり、NSMutableData は UTF-8 とは異なるエンコーディングを使用しています)。さまざまな種類のエンコーディングをすべて試しましたが、まだ運がありません。

4

1 に答える 1

-1

文字列をエンコードしている場所がわかりません。通常、 を でエンコードしNSStringNSKeyedArchiverから、 を使用してアーカイブ解除しNSKeyedUnarchiverます。これがどのように機能するかを理解していないようです。Obj-C を使用したアーカイブについて読むことをお勧めします。

于 2012-08-08T14:30:51.683 に答える