gpt4 book ai didi

objective-c - 如何在 Objective C 中声明类数组

转载 作者:行者123 更新时间:2023-12-02 08:57:27 24 4
gpt4 key购买 nike

我可以声明 NSMutableArrayNSArray 但我想声明类数组。假设用户是一个类,所以我可以将数组声明为:

user* obj[10];

它在 Objective c 中有效,但我不确定如何动态设置数组容量。我们通常将 MutableArray 用作 initWithCapacity:..

这就是我在类里面所做的事情:

user* objuser;
CustomOutput* output = [[CustomOutput alloc] init];
[objuser cutomSerialize:output];
NSMutableData* data = output.data;

但是如果我的数组为:

NSMutableArray* aryUserObj;

我无法从 arryUserObj 调用 cutomSerialize 方法。

我想序列化所有的 userObj 并获得一个 NSData 对象。

最佳答案

序列化对象数组的标准方法是在 User 对象中定义 encodeWithCoder:initWithCoder::

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

数组的迭代是自动完成的。另请注意,您不会取回可变数组,它是一个不可变数组。

关于objective-c - 如何在 Objective C 中声明类数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com