I am working on NSKeyArchive and running into the problem... What I am having so far is
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.}
In my header file, items is declared like
@property (nonatomic, copy) NSMutableArray *items;
However, line 15 shows that type of items is NSArray ( not NSMutablArray)
Does anyone have an idea about this one,please help. All comments are welcomed. Thanks
Change this line in your -(BOOL)unarchiveItem
ReplyDeleteself.items = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
to
self.items = [[[NSKeyedUnarchiver unarchiveObjectWithFile:path] mutableCopy] autorelease];
change your declaration
@property (nonatomic, copy) NSMutableArray *items;
to
@property (nonatomic, retain) NSMutableArray *items;
Everytime you archive any object (mutable or immutable)...after unarchiving you will always get an "immutable" copy , so like X Slash wrote..obtain a mutable copy of the array..!!
ReplyDelete