Стандартный подход к сериализации массива объектов заключается в определении encodeWithCoder:
и initWithCoder:
в вашем User
объекте:
@interface User: NSObject {
....
}
-(void)encodeWithCoder:(NSCoder*)coder ;
-(id)initWithCoder:(NSCoder*)coder;
@end
То, что у вас есть в CustomSerialize
, должно быть в этих методах.
Затем, если вы хотите закодировать объект, вы делаете
User* user=... ;
NSData* data=[NSKeyedArchiver archivedDataWithRootObject:user];
и расшифровать его:
User* user=[NSKeyedUnarchiver unarchiveObjectWithData:data];
Если у вас есть массив объектов,
NSMutableArray* array=... ; // an array of users
NSData* data=[NSKeyedArchiver archivedDataWithRootObject:array];
и
NSArray* array=[NSKeyedUnarchiver unarchiveObjectWithData:data];
Итерация по массиву выполняется автоматически.
Также обратите внимание, что вы не получите обратно изменяемый массив, это неизменный массив.