Я пытался архивировать объект в файл plist и загружать его позже, чтобы заполнить таблицуView. Кажется, что файл заархивирован правильно, но я получаю плохой доступ, пытаясь получить значение из файла.NSKeyedUnarchiver - Плохой доступ
Я что-то не так?
Это где я сохранить его
// Create some phonebook entries and store in array
NSMutableArray *book = [[NSMutableArray alloc] init];
Phonebook *chris = [[Phonebook alloc] init];
chris.name = @"Christian Sandrini";
chris.phone = @"1234567";
chris.mail = @"[email protected]";
[book addObject:chris];
[chris release];
Phonebook *sacha = [[Phonebook alloc] init];
sacha.name = @"Sacha Dubois";
sacha.phone = @"079 777 777";
sacha.mail = @"[email protected]";
[book addObject:sacha];
[sacha release];
Phonebook *steve = [[Phonebook alloc] init];
steve.name = @"Steve Solinger";
steve.phone = @"079 123 456";
steve.mail = @"[email protected]";
[book addObject:steve];
[steve release];
[NSKeyedArchiver archiveRootObject:book toFile:@"phonebook.plist"];
И здесь я стараюсь, чтобы получить его из файла и сохранить его обратно в массив
- (void)viewDidLoad {
// Load Phone Book
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile:@"phonebook.plist"];
self.list = arr;
[arr release];
[super viewDidLoad];
}
часть, где я пытаюсь построить клетка
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *PhoneBookCellIdentifier = @"PhoneBookCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:PhoneBookCellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:PhoneBookCellIdentifier] autorelease];
}
NSUInteger row = [indexPath row];
Phonebook *book = [self.list objectAtIndex:row];
cell.textLabel.text = book.name;
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
return cell;
}
Здесь плохая ошибка доступа
Текущий язык: авто; В настоящее время Objective-C Утверждение не удалось: (ЦБС), функции GetName, файл /SourceCache/objc4_Sim/objc4-427.5/runtime/objc-runtime-new.mm, линии 3990. Утверждение не удалось: (ЦБС), функции GetName, файл /SourceCache/objc4_Sim/objc4-427.5/runtime/objc-runtime-new.mm, линии 3990. Утверждение не удалось: (ЦБС), функции GetName, файл /SourceCache/objc4_Sim/objc4-427.5/runtime /objc-runtime-new.mm, линии 3990. Утверждение не удалось: (ЦБС), функция GetName, файл /SourceCache/objc4_Sim/objc4-427.5/runtime/objc-runtime-new.mm, линии 3990.
I Не уверен, что это единственная проблема, но вы не должны выпускать arr в viewDidLoad. – walkytalky