誰がどのように変換する方法を教えてもらえますNSArray
しNSData
?私は持っていNSArray
ます。に送信する必要がありますNSInputStream
。私は変換する必要があることを行うために、NSArray
にNSData
。
私を助けてください、私はここで立ち往生しています。
回答:
NSKeyedArchiver(Garrettリンクの投稿の最後の文)を使用します。
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
のすべてのオブジェクトarray
はNSCoding
プロトコルに準拠している必要があることに注意してください。これらがカスタムオブジェクトである場合は、オブジェクトのエンコードとデコードについて調べる必要があることを意味します。
これにより、かなり読みにくいプロパティリスト形式が作成されますが、非常に広範囲のオブジェクトを処理できることに注意してください。非常に単純な配列(たとえば文字列)がある場合は、NSPropertyListSerializationを使用すると、少し単純なプロパティリストが作成されます。
NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
有線で読み取り可能にしたい場合は、渡すことができるXML形式の定数もあります。
やや関連したメモとして、NSDataをNSArrayに戻す方法は次のとおりです。
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data]
これが役立つかどうかはわかりませんが、NSMutableArrayからNSDataへのリンクです。