私は NSMutableArray と NSString を持っています。これらをアーカイブし、配列と文字列内のデータを変更せずに配列と文字列を取得したいと考えています。
私はこのように与えました、
アーカイブ用、
NSMutableData *data = [[NSMutableData alloc]init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:arrayRandomNumberForUser forKey:@"array"];
[archiver encodeObject:stringBingo forKey:@"string"];
[archiver finishEncoding];
アンアーカイブのために、
NSData *data=match.matchData;
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
mutableArray = [unarchiver decodeObjectForKey:@"array"];
stringtakenValue = [unarchiver decodeObjectForKey:@"string"];
[unarchiver finishDecoding];
ここで、match.matchData は、 gamecenterのテイク ターン メソッドから取得する NSData オブジェクトです。
take turnMethod を呼び出すと、クラッシュします。コンソール ウィンドウのエラー メッセージを次に示します。
キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[NSXPCEncoder encodeObject:forKey:]: このコーダーは、NSSecureCoding を採用するオブジェクトのみをエンコードします (オブジェクトはクラス 'NSKeyedArchiver' です)。