gpt4 book ai didi

ios - 从 NSOrderedSet 和核心数据中删除一个项目

转载 作者:行者123 更新时间:2023-11-29 12:46:53 26 4
gpt4 key购买 nike

我正在为一个项目使用 Core Data,在删除与 Book 对象有关系的 Page 对象时遇到了一些问题(Book 对象存储了一个存储 Page 对象的 NSOrderedSet)。我尝试通过这样做删除:

- (void) deleteFiles: (Page *)deletedPage {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *err;
NSString *filePath = deletedPage.imageURL;
BOOL success = [fileManager removeItemAtPath:filePath error:&err];

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Page" inManagedObjectContext:context]];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"imageURL == %@", deletedPage.imageURL]];
NSError* error = nil;
NSArray* results = [context executeFetchRequest:fetchRequest error:&error];

for (NSManagedObject *product in results) {
NSLog(@"%@", product);
[context deleteObject:product];
}
[book removeHasPagesObject: deletedPage];
[context save:&error];

}

它似乎在应用程序仍在运行时工作。但是,如果我退出该应用程序并重新打开它,我之前应该删除的一些 Page 对象仍然存在。

注意:虽然我使用 for each 循环来删除上下文中的内容,但我一次只删除一个对象,因为每个对象都有一个唯一的 imageURL 值。

注意:book 是一个 Book 对象,我从另一个类的 segue 传递到该类中。 book是该类中的一个全局变量,是包含Page对象所在的NSOrderedSet的核心数据对象。

最佳答案

这个:

seems to work while the app is still running. However if I quit the app and reopen it, some of the Page objects I had supposedly deleted before are still there.

通常在上下文未正确保存时发生。试试这个:

NSError *savingError = nil;

if ([self.YourManagedObjectContext save:&savingError]) {
NSLog(@"Successfully saved the context.");
} else {
NSLog(@"Failed to save the context. Error = %@", savingError);
}

看看你得到了什么,如果这解决了问题,请告诉我,希望它有帮助。

关于ios - 从 NSOrderedSet 和核心数据中删除一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23484990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com