unarchiveObjectWithFile返回NSArray

时间:2012-02-07 02:21:47

标签: iphone

我正在研究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)

有没有人对此有所了解,请帮忙。欢迎所有评论。 谢谢

2 个答案:

答案 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写的那样......获得数组的可变副本.. !!