9

NSKeyedArchiver から生成された NSData を NSString に変換して、それを渡し、最終的に NSData に戻すことができるようにしようとしています。これを文字列として渡す必要があります (three20 URL 受け渡しを使用しています)。UTF8、ASCII など、さまざまなエンコーディングを試しましたが、何も動作しません。NSKeyedArchiver によると、NSData はプロパティ リスト NSPropertyListBinaryFormat_v1_0 としてフォーマットされています。

この NSData を String に変換して元に戻す方法を知っている人はいますか? 文字列のサイズは問題ではありません。

ありがとう

4

3 に答える 3

2

iOS 9.2.1、Xcode 7.2.1、ARC 対応

base64EncodedString、dataFromBase64String: iOS 7.0 以降は廃止予定

更新されたソリューション:

文字列にエンコード:

id<nscoding> obj;

NSData *data     = [NSKeyedArchiver archivedDataWithRootObject:obj];
NSString *string = [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

データにデコード:

NSString *string;

NSData *data    = [[NSData alloc] initWithBase64EncodedString:string options:(NSDataBase64DecodingIgnoreUnknownCharacters)];
id<nscoding> obj = [NSKeyedUnarchiver unarchiveObjectWithData:data];

注: これは、キーチェーンを使用してキーと値のペアの辞書を kSecValueData に格納する場合に非常に便利です。

これが誰かを助けることを願っています! 乾杯。

于 2016-03-02T20:13:05.767 に答える
0

あなたがしなければならないのは、次のようなことだけです:

NSData *dataFromString = [[NSString stringWithFormat:@"%@", yourString] dataUsingEncoding:NSASCIIStringEncoding];

次に、データを抽出します。

NSString *stringFromData = [[NSString alloc] initWithData:dataFromString encoding:NSASCIIStringEncoding];
于 2011-05-23T22:20:29.603 に答える