我正在尝试开发Cydia调整,但现在我遇到了一些问题。
我想复制一个NSMutableArray,所以我使用:
myArray = %orig;
NSMutableArray* myArray2;
myArray2 = myArray;
NSData* data = [NSKeyedArchiver archivedDataWithRootObject: myArray2];
(原始函数返回了一个NSMutableArray,所以我使用myArray =%orig;来获取它)
但是,似乎archivedDataWithRootObject不起作用,它总是导致我的设备崩溃。
那么,archivedDataWithRootObject是否有任何限制?我不知道原始的NSMutableArray是否编码。我可以将archivedDataWithRootObject用于编码的NSMutableArra吗?
感谢您的任何建议和回复
答案 0 :(得分:0)
我不理解您的代码中的这行代码:
myArray =%orig;
我无法理解你为什么要这样做:
NSMutableArray * myArray2;
myArray2 = myArray;
如果您有NSArray或NSMutableArray,您将能够使用该行代码直接编码:
NSData* data = [NSKeyedArchiver archivedDataWithRootObject: myArray2];
但是(总是如此......)
您NSArray
中的商店是什么?
如果你得到custom object
,他们必须实施NSCoding协议才能参与存档舞蹈。
最后你说:
我想复制一个NSMutableArray,所以我使用:
如果您只想复制NSMutableArray
,可以执行此操作:
[[NSMutableArray alloc] initWithArray:anArray];
我仍然没有在那里获得%
标志
如果你需要向它添加新对象,为什么不简单,比如创建新对象。如果它是您自己的对象,您有两个选择:
首先,你在那些对象上实现NSCopying协议,使它们表现得像你想要的那样,或者
第二种选择:如果数组包含一种类型的对象,您可以为这些对象创建一个Class方法:newObjectWithArray:(* NSArray)theArray
,在该方法中,您alloc
init
对象初始化为接收对象的价值。