【问题标题】:How to use MagicalRecord Library in cocoa touch framework?如何在 cocoa touch 框架中使用 MagicalRecord 库?
【发布时间】:2016-10-23 01:33:42
【问题描述】:

我们制作了一个可可触控框架,可以从本地数据库保存和获取数据。为此,我们使用了 core-data 和 MagicalRecord 库。

当我们将我们的框架与某个应用程序集成并尝试将数据添加到数据库时,我们会遇到一个崩溃,表明该实体不存在。因此,我们尝试打印实体列表并得到一个空数组。

以下问题类似,但适用于静态库 - Using magicalrecords library in custom static framework iOS

我们尝试了接受的答案,但没有解决问题,因为 cocoa touch 框架不存在框架包路径

在可可触摸框架的情况下,有人有任何解决方案吗?

【问题讨论】:

  • 谁能告诉我为什么这个问题被否决了?我在stackoverflow中没有找到这个问题的答案。所以,我贴出来了。如果您知道类似的问题,请将我重定向到链接。
  • 我也面临同样的问题。我想知道在哪里设置核心数据堆栈
  • 您好,我们解决了这个问题。您可以在框架本身中设置核心数据堆栈。我会添加答案。

标签: ios objective-c core-data magicalrecord cocoa-touch


【解决方案1】:

谢谢krishnaCA!奇迹般有效。 这是代码的快速版本:

func setupCoreDataStack(_ storeFile:String){

    guard let frameworkBundle = Bundle.init(identifier: "bundleID") else { return }
    MagicalRecord.setShouldAutoCreateManagedObjectModel(false)
    NSManagedObjectModel.mr_setDefaultManagedObjectModel(NSManagedObjectModel.mergedModel(from: [frameworkBundle,Bundle.main]))
    MagicalRecord.setupCoreDataStack(withAutoMigratingSqliteStoreNamed: storeFile)
}

【讨论】:

    【解决方案2】:

    您可以在框架内设置核心数据堆栈,并在框架内使用以下行对其进行初始化。

     NSArray *bundles = @[[NSBundle bundleWithIdentifier:YOUR_FRAMEWORKS_BUNDLE_IDENTIFIER], [NSBundle mainBundle]];
    [MagicalRecord setShouldAutoCreateManagedObjectModel:NO];
    [NSManagedObjectModel MR_setDefaultManagedObjectModel:[NSManagedObjectModel mergedModelFromBundles:bundles]];
    [MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:YOUR_COREDATA_MODEL_NAME];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 2015-09-20
      • 2017-06-01
      • 2015-08-26
      相关资源
      最近更新 更多