Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NSKeyedArchiver部分编码NSMutableArray_Ios_Objective C_Serialization - Fatal编程技术网

Ios 使用NSKeyedArchiver部分编码NSMutableArray

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

我的Person类实现了NSCoding协议:

@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];