У меня есть функция addToFavourites, которая вызывает ошибку EXC_BAD_ACCESS.По сути, у меня есть контроллер представления «Избранное» со списком всех избранных, которые пользователь добавил ранее, теперь, при нажатии на одно из избранных, он перемещает представление в detailViewController, это прекрасно работает.На контроллере подробного представления у меня есть кнопка добавления в избранное, эта кнопка меняется на удаление из избранного, если обнаруживает, что ключ уже существует в словаре addToFavourites.Проблема возникает, когда пользователь обращается к этому detailViewController со страницы избранного, а также с главной страницы, на которой перечислены все подробные виды.Они могут сделать это, так как у меня есть панель вкладок.
Так, скажем, я в detailView, доступном через страницу избранного, кнопка избранного имеет «удалить из избранного», это правильно.Но затем, скажем, я нажимаю кнопку «Удалить из избранного», кнопка меняется на «Добавить в избранное» и удаляет ее из словаря.Пока все работает нормально.Теперь, когда я переключаюсь на тот же detailView, но на этот раз доступ к нему осуществляется с другой вкладки на панели вкладок, во-первых, кнопка «Избранное» по-прежнему показывает «удалить из избранного», а когда я нажимаю эту кнопку в первый раз, она меняется на «Добавить в«Избранное», затем, когда я нажимаю его снова, я получаю эту ошибку EXC_BAD_ACCESS.
Вот функция addToFavourites:
- (IBAction)addToFavourites:(id)sender {
NSString *type = [[NSUserDefaults standardUserDefaults]objectForKey:@"type"];
if(type == @"v") {
NSString *area = [[NSUserDefaults standardUserDefaults]objectForKey:@"area"];
NSString *ID1 = [[NSUserDefaults standardUserDefaults]objectForKey:@"ID1"];
if([[addToFavouritesDictionary allKeys] containsObject:ID1]) {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"/SavedDict.data"];
[addToFavouritesDictionary removeObjectForKey:ID1];
[favouritesButton setTitle:@"+ Favourites" forState:(UIControlState)UIControlStateNormal];
[addToFavouritesDictionary writeToFile:filePath atomically: YES];
NSLog(@"New Dictionary: %@", addToFavouritesDictionary);
} else {
NSString *ID1 = [[NSUserDefaults standardUserDefaults]objectForKey:@"ID1"];
[addToFavouritesDictionary setObject:Name forKey:ID1];
[favouritesButton setTitle:@"- Favourites" forState:(UIControlState)UIControlStateNormal];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"/SavedDict.data"];
[addToFavouritesDictionary writeToFile:filePath atomically: YES];
NSLog(@"Mutable Dictionary: %@", addToFavouritesDictionary);
//[addToFavouritesDictionary release];
}
} else {
//NSString *area = [[NSUserDefaults standardUserDefaults]objectForKey:@"area"];
NSString *ID2 = [[NSUserDefaults standardUserDefaults]objectForKey:@"ID2"];
if([[addToFavouritesDictionary allKeys] containsObject:ID2]) {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"/SavedDict.data"];
[addToFavouritesDictionary removeObjectForKey:ID2];
[favouritesButton setTitle:@"+ Favourites" forState:(UIControlState)UIControlStateNormal];
[addToFavouritesDictionary writeToFile:filePath atomically: YES];
NSLog(@"Dictionary: %@", addToFavouritesDictionary);
} else {
NSString *ID2 = [[NSUserDefaults standardUserDefaults]objectForKey:@"ID2"];
[addToFavouritesDictionary setObject:Name forKey:ID2];
[favouritesButton setTitle:@"- Favourites" forState:(UIControlState)UIControlStateNormal];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"/SavedDict.data"];
[addToFavouritesDictionary writeToFile:filePath atomically: YES];
NSLog(@"Mutable Dictionary: %@", addToFavouritesDictionary);
}
}
}
Спасибо за любую помощь!