Методы encodeWithCoder:
и initWithCoder
вызываются, когда вы архивируете / разархивируете объект, который отвечает на них.Насколько я понимаю, у вас есть эти методы в вашем классе, но объект, который вы на самом деле архивируете (queueArray
), не является экземпляром этого класса, это NSMutableArray
.
Если вы действительно хотитесохранить весь объект, вы можете изменить метод saveQueue на
-(IBAction)saveQueuePressed {
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [rootPath stringByAppendingPathComponent:@"queueArray.archive"];
// saving the array shouldn't, but saving the self object
//should cause encodeWithCoder to be called:
[NSKeyedArchiver archiveRootObject:self toFile:filePath];
}
Но если вы просто хотите сохранить массив, я думаю, вы можете просто использовать saveQueuePressed
и loadQueuePressed
, я недумаю, вам нужны encode/init WithCoder:
методы
Обновление: Возможно, ваш путь не верный.Попробуйте
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [[rootPath stringByAppendingPathComponent:@"queueArray.archive"] stringByExpandingTildeInPath]];