我正在研究NSKeyArchive并遇到问题......到目前为止我所拥有的是
1.-(BOOL)archiveItem
2.{
3. NSString *path = [self findPath];
4. if ([NSKeyedArchiver archiveRootObject:items toFile:wishListPath])
5. {
6. return YES;
7. }else{
8. return NO;
9. }
10.}
11.-(BOOL)unarchiveItem
12.{
13. NSString *path = [self findPath];
14. self.items = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
15. NSLog(@"Class of items is %@",[self.items class]);
16. if (self.items == nil)
17. return NO;
18. else
19. return YES;
20.}
在我的头文件中,项目被声明为
@property (nonatomic, copy) NSMutableArray *items;
但是,第15行显示项的类型是 NSArray (不是NSMutablArray)
有没有人对此有所了解,请帮忙。欢迎所有评论。 谢谢
答案 0 :(得分:1)
在-(BOOL)unarchiveItem
self.items = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
到
self.items = [[[NSKeyedUnarchiver unarchiveObjectWithFile:path] mutableCopy] autorelease];
更改您的声明
@property (nonatomic, copy) NSMutableArray *items;
到
@property (nonatomic, retain) NSMutableArray *items;
答案 1 :(得分:0)
每次归档任何对象(可变或不可变)...在取消归档后,您将始终获得“不可变”副本,因此就像X Slash写的那样......获得数组的可变副本.. !!