nscoder-複数のレベルのネストされた配列を備えた配列のエンコード
-
27-10-2019 - |
質問
カスタムクラスのインスタンスが入力されたMainObjectArray(nsmutablearray)があります。各インスタンスはそれ自体が配列であり、各配列のオブジェクトは、NSDate、NSStrings、Bool、および同様のオブジェクトを含むより多くの配列です。
私が確立できなかったのは、それが可能かどうか、
- (void)encodeWithCoder:(NSCoder *)encoder
方法、そのようなことを言うだけです:
[encoder encodeWithObject:mainObjectArray];
または、すべてのインスタンスのすべてのオブジェクトを個別にエンコードする必要がありますか?これは少し痛いでしょう...
あなたの助けは大歓迎です。
解決
カスタムクラスにエンコードとデコードのメソッドを実装するだけです。それはそうします。いくつかのサンプル、
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:[NSNumber numberWithInt:pageNumber] forKey:@"pageNumber"];
[encoder encodeObject:path forKey:@"path"];
[encoder encodeObject:array forKey:@"array"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
if(self = [super init])
{
self.pageNumber = [[aDecoder decodeObjectForKey:@"pageNumber"] intValue];
self.path = [aDecoder decodeObjectForKey:@"path"];
self.array = [aDecoder decodeObjectForKey:@"array"];
}
}
完全に3つのデータ型がエンコードおよびデコードされていることがわかります - int、string、array。
お役に立てれば。
所属していません StackOverflow