2012-02-07 4 views
0

Я работаю над NSKeyArchive и работает в проблему ... Что я имею до сих пор являетсяunarchiveObjectWithFile возвращает NSArray

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)

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

ответ

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; 
+0

это не сработало, то .. Я получил это * - [__ NSArrayI removeObjectAtIndex]: непризнанные селектор направлен например 0x6f26af0 * – tranvutuan

+0

увидеть мой выбор, надеюсь, он теперь будет работать –

+0

да, когда я изменить, чтобы сохранить. Он работает как шарм ... Спасибо – tranvutuan

0

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

+0

Я также благодарю за ваше объяснение – tranvutuan

Смежные вопросы