LevelContent
いくつかのプロパティを含むカスタム オブジェクトがあります。LevelContent
に準拠し、およびメソッドNSCoding
を実装しました。データを保存して Parse.com にフェッチします。保存は次のようにうまくいきます: encodeWithCoder:
initWithCoder:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.currentLevelContent];
データをフェッチすると、NSData
正しく取得されますLevelContent
が、ダウンロードしたデータで初期化しようとすると、initWithCoder:
呼び出されません。私はこれをロードしようとしますLevelContent
:
LevelContent *content = [NSKeyedUnarchiver unarchiveObjectWithData:data];
エンコード/デコードのコードは次のとおりです
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.tiles forKey:@"tiles"];
[aCoder encodeObject:self.attributes forKey:@"attributes"];
[aCoder encodeObject:self.level forKey:@"level"];
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
if (self == [super init]) {
self.tiles = [NSMutableArray array];
[self.tiles addObjectsFromArray:[aDecoder decodeObjectForKey:@"tiles"]];
self.attributes = [NSMutableDictionary dictionary];
[self.attributes addEntriesFromDictionary:[aDecoder decodeObjectForKey:@"attributes"]];
self.level = [Level levelWithTopIndex:0 detailIndex:0];
self.level = [aDecoder decodeObjectForKey:@"level"];
}
return self;
}