unarchiveObjectWithFile возвращает NSArray - PullRequest
0 голосов
/ 07 февраля 2012

Я работаю над 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 показывает, что тип items равен NSArray (не NSMutablArray)

У кого-нибудь есть идеи по этому поводу, пожалуйста, помогите.Все комментарии приветствуются.Спасибо

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Измените эту строку в вашем -(BOOL)unarchiveItem

self.items = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

на

self.items = [[[NSKeyedUnarchiver unarchiveObjectWithFile:path] mutableCopy] autorelease];

измените ваше объявление

@property (nonatomic, copy) NSMutableArray *items;

на

@property (nonatomic, retain) NSMutableArray *items;
0 голосов
/ 07 февраля 2012

Каждый раз, когда вы архивируете любой объект (изменяемый или неизменяемый) ... после разархивирования вы всегда получите «неизменяемую» копию, так как, как писал X Slash… получите изменяемую копию массива… !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...