- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在使用 MagicalRecord 时遇到了一个奇怪的问题。删除不会持续存在。当我删除时,NSFetchedResultsControllerDelegate 正确地看到该对象已被删除。但是,如果我关闭并重新打开应用程序,该实体会重新出现。
我用来删除实体的代码是:
ActivityType *activityType = [_fetchedResultsController objectAtIndexPath:indexPath];
[activityType deleteInContext:[NSManagedObjectContext MR_defaultContext]];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
我用来设置 NSFetchedResultsController 的代码是:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"ActivityType" inManagedObjectContext:[NSManagedObjectContext defaultContext]];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"name" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[NSManagedObjectContext defaultContext] sectionNameKeyPath:nil
cacheName:@"activityTypes"];
_fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
根据其他 SO 帖子,我还尝试在设置和删除中使用 [NSManagedObjectContext rootSavingContext]
(但无济于事)。
最佳答案
我在核心数据方面经历了 hell 般的考验,我学到了一些东西。我累了,所以我会写一个简短的总结。
当您删除一个实体时,Core Data 可能会因为您的删除规则而拒绝它。我的删除没有通过的原因是因为它需要级联但是它被取消了。我认为这与以某种方式遗弃实体有关。我不知道为什么这会导致阻止删除,但这就是我的情况。我发现它的方式是通过日志,我看到了一些关于引用的依赖实体的声明,我意识到删除规则将适用。
当日志显示有关严重错误和监听器的信息时,请检查 FRC 代码。由于这是监听器,因此您的罪魁祸首代码将在某处。就我而言,我禁用了 [tableview beginUpdates] 和 [tableview endupdates]。 FRC 实际上需要这个(我认为它是可选的)。否则,您会收到一些关于不一致和 managedobjectcontextlistener 以及如何添加或删除行等的错误。
当您删除时,它实际上可能会保存到内存本地上下文中,但可能不会保存到持久存储中。这意味着 FRC 委托(delegate)代码将看到更改,但可能不会保存。此外,内存存储可能不会在通过我的时进行删除规则检查。但持久存储将进行检查。得再看看这个。
关于ios - 删除 MagicalRecord 中的实体不会持久存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992129/
我如何在 MagicalRecord 中为此找到替换方法(已弃用)?我看过谷歌、SO 和文档;似乎没有什么可以替代,当然,文档中没有任何内容告诉您是什么取代了已弃用的方法。 :-{ [[NSManag
我的服务器以“yyyy-MM-dd'T'HH:mm:ss'Z'”格式提供UTC日期,例如MST 的 11 月 15 日午夜是“2013-11-15T07:00:00Z”。这种格式是 MagicalRe
我像这样设置我的 MagicalRecord 堆栈: MagicalRecord.setupAutoMigratingCoreDataStack() let moc = NSManagedObject
@编辑@PangHoMing - 我会再次一步一步地做。首先设置 - 按照您的建议 MagicalRecord.setLoggingLevel(.verbose) MagicalRec
大家好, 我正在使用 MagicalRecord 并尝试删除两个实体之间建立的关系 联系>组 一个联系人可以与多个组相关,一个组也可以与多个联系人相关。 比如Ben在第1组,Alex也在第1组,我想把
我正在从我无法控制的网络服务中导入 JSON 响应。此响应包含我映射到 Show 实体的元素,该实体在同一 JSON 中具有多个相关的 Artwork 对象。 我通过 userinfo 键建立了关系,
似乎我什么都试过了,但似乎只在主线程中有效。例如: [SomeClass MR_createEntity]; [[NSManagedObjectContext MR_defaultContext] M
我使用 MagicalRecord 作为处理 Core Data 的一个很好的库。我的问题是如何在我的应用程序进入后台之前保存数据。因为我尝试通过 block 写入数据,当然它不会工作,因为应用程序将
我是 MagicalRecord 的新手。我在通过不同方法更新相同实体时遇到问题。这是我的例子:我有一些从网络服务获得的广告。完成后,如果有任何事件属性设置为 0,我需要更新数据库中的广告。我需要立即
我想知道为什么我的核心数据停止保存更改。事实上,上面的代码几小时前就可以工作了。当我尝试打印出错误时,它打印出 (null)。下面的代码是 NSManagedObjectSubclass 的自定义方法
我正在开发一款游戏,我正在使用 MagicalRecord 来存储高分。该游戏有 4 种模式和 2 种“类型”,因此有 8 种组合可供选择,我想为每一种组合打高分。我正在使用这个逻辑: NSArray
我尝试获取用户保存在应用程序中的所有元素(这可能很容易),从每条记录中获取一个属性并将这些属性列在一个字符串中(这就是问题所在)。我该怎么做?我写了一些东西,但我认为这不是正确的方法。请帮助我! -
我有这个代码: HLMReferenceData *referenceDataObj = [HLMReferenceData createEntity]; [MagicalRecord saveWit
我正在使用返回结果的网络服务,如下例所示: { "name":"Frank", "meals":[ "cheeseburger", "lasagne" ] }
我正在尝试将数据导入 Core Data 并使用 MagicalRecord 将其保存在后台线程中。 我基本上是在尝试这样做: __block User *user = nil; [MagicalRe
对于每次应用程序更新,我都想彻底删除我的整个 Core Data 数据库,然后重新设置它。我没有成功这样做。我尝试了各种方法,这似乎是我最接近的方法。我找到了几个 SO 帖子,但没有一个解决方案适合我
在 iOS5.0 中,使用 arc,我使用 Magical record 在核心数据中创建对象。我有一个产品对象,它与 Promotion 对象具有称为“currentPromotions”的一对多关
我有以下格式的日期: 2013-05-04T05:07:09+00:00 我正在使用 MagicalRecord 自动映射 NSDate。据我所知,上述日期格式应符合 MagicalRecord 的默
我有以下代码: dispatch_async(dispatch_get_main_queue(), ^{ NSManagedObjectContext *localContext = [NSM
我正在尝试 MagicalRecord 的一些非常基本的实现,以掌握它并遇到以下问题。 当我保存一个条目然后获取该类型的条目时,它会出现我刚刚保存的条目。但是,当我保存条目、关闭应用程序、重新启动它然
我是一名优秀的程序员,十分优秀!