【问题标题】:Magical Record What is the difference in deleting all records with context and without contextMagical Record 删除所有有上下文和没有上下文的记录有什么区别
【发布时间】:2014-08-22 12:11:40
【问题描述】:

这可能是一个非常基本的问题。我看到了两种从 Core Data 中删除记录的方法。我正在使用 Magical Record 库。

选项 1:

[myEntityName truncateAll]

选项 2:

NSManagedObjectContext *localContext = [NSManagedObjectContext contextForCurrentThread];
[myEntityName truncateAllInContext:localContext];

这两者有什么区别?从第二个选项我可以感觉到删除发生在当前线程中。如果是这样,如果我使用 'truncateAll' 会有什么影响?

请多多指教。

【问题讨论】:

标签: objective-c core-data magicalrecord


【解决方案1】:

如果你去文件CoreData+MagicalRecord.m,你会看到truncateAll:调用truncateAllInContext:

+ (BOOL) MR_truncateAll
{
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wdeprecated-declarations"
    [self MR_truncateAllInContext:[NSManagedObjectContext MR_contextForCurrentThread]];
    #pragma clang diagnostic pop

    return YES;
}

这意味着truncateAll: 允许您调用truncateAllInContext: 而无需将当前线程的上下文指定为参数。

【讨论】:

  • 请停止使用 contextForCurrentThread。我们已弃用该方法,因为它在使用 GCD 而不是线程来支持并发时容易崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
  • 2020-10-29
  • 2013-04-23
  • 2012-11-03
  • 2010-09-27
  • 2012-01-01
相关资源
最近更新 更多