Ios 使用NSKeyedArchiver部分编码NSMutableArray
我的Person类实现了NSCoding协议:Ios 使用NSKeyedArchiver部分编码NSMutableArray,ios,objective-c,serialization,Ios,Objective C,Serialization,我的Person类实现了NSCoding协议: @interface Person : NSObject <NSCoding> @property NSString *name; @property float salary; @end @implementation Person -(void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:_name forKey:@"name"]; [aCod
@interface Person : NSObject <NSCoding>
@property NSString *name;
@property float salary;
@end
@implementation Person
-(void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeFloat:_salary forKey:@"salary"];
}
-(id)initWithCoder:(NSCoder *)aDecoder{
if(self=[super init])
{
_name =[aDecoder decodeObjectForKey:@"name"];
_salary=[aDecoder decodeFloatForKey:@"salary"];
}
return self;
}
未调用customNSMutableArray中的EncoderWithCoder方法。
它直接传递给数组中my Person实体的EncoderWithCoder
如何部分序列化NSMutableArray?您可以将
Person
子类化为PartialPerson
,您可以对其进行存档/取消存档
将NSMutableArray子类化不是一个好主意,我认为没有理由这样做。将
NSMutableArray子类化不是一个好主意。它是“类簇”的一部分。没有理由为此而将其子类化。只需归档/取消归档整个NSMutableArray
.Hmm。。我不明白这对我有什么帮助。我和一些人有一个NSMutableArray。我看到的唯一方法是创建NSMutableArray的部分副本并保存它。但它需要额外的RAM来复制个人实体(是否?)。
@interface customNSMutableArray : NSMutableArray<NSCoding>
@end
@implementation customNSMutableArray
-(void)encodeWithCoder:(NSCoder *)aCoder
{
for(NSObject * obj in self)
{
//if(some_condition)
[aCoder encodeObject:obj];
}
}
-(id)initWithCoder:(NSCoder *)aDecoder
{
//@todo
return self;
}
@end
@property customNSMutableArray *companyStaff;
...
NSData * data=[NSKeyedArchiver archivedDataWithRootObject:_companyStaff];