WatchKit 和 MagicalRecord - 这可能吗?

Posted

技术标签:

【中文标题】WatchKit 和 MagicalRecord - 这可能吗?【英文标题】:WatchKit and MagicalRecord - is that possible? 【发布时间】:2015-03-23 14:33:12 【问题描述】:

我有一个通过 MagicalRecord 使用 Core Data 的 ios 应用程序。现在我想用 WatchKit 扩展来扩展应用程序,因此需要访问 MagicalRecord。这是可能的还是我必须切换到“本机”核心数据?如果我可以在 WatchKit 扩展中使用 Magical Record,那就太完美了,但直到现在我才弄清楚怎么做。我什至无法将我的 cocoapods 包含在共享的 Cocoa Touch 框架中... (use CocoaPods 0.36.0 in CocoaTouchFramework with Swift)

【问题讨论】:

【参考方案1】:

在您的 WatchKit 扩展中使用 MagicalRecord 应该没有任何问题。您需要执行以下操作。

    在 WatchKit 扩展的常规设置中,您需要将 libPods.a 添加到链接框架和库中。

    您需要让 MagicalRecord 使用共享组文件夹中的数据库,而不是其默认的应用程序文件夹。为此,您需要在设置 MagicalRecord 时执行此操作

    NSString* dbPath = [self sharedAppGroupDirectory];
    dbPath = [dbPath stringByAppendingPathComponent:@"MyDatabaseName.sqlite"];
    NSURL* dbURL = [NSURL fileURLWithPath:dbPath];
    [MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(id)dbURL];
    

您可以使用此获取共享的应用程序组目录。

NSFileManager *fm = [NSFileManager defaultManager];
NSString *appGroupName = @"group.com.mygroup";
NSURL *groupContainerURL = [fm containerURLForSecurityApplicationGroupIdentifier:appGroupName];
NSString* path = [groupContainerURL filePathString];

【讨论】:

好的,我添加了 libPods.a,但是当我通过 import MagicalRecord 将它导入我的 InterfaceController.swift 时,我得到了 No such module 'MagicalRecord' - 我必须在我的 Podfile 中添加一些特殊的东西吗?跨度> 我也不知道如何将我的NSManagedObjectModel-subclasses 包含到 WatchKit-Extension... 除非,自从我上次检查以来,MagicalRecord 添加了一个 swift 实现,您将需要使用 Obj-C 到 Swift 桥头来在您的 swift 类中使用 MagicalRecord。您的 for 子类需要将其添加到 WatchKit 扩展目标中。见***.com/questions/27112728/… 我创建了一个新项目,其中 WatchKit 扩展是 Objective-C,但我无法导入 MagicalRecord:#import <MagicalRecord/MagicalRecord.h> 导致 'MagicalRecord/MagicalRecord.h' file not found - 虽然我正在添加 libPods.a - 什么我在这里失踪了吗?【参考方案2】:

在您的个人资料文件中添加一行

link_with 'yourApp', 'yourAppExtension'

然后在终端上运行命令行

pod install

【讨论】:

以上是关于WatchKit 和 MagicalRecord - 这可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

WatchKit App 只启动 iPhone Simulator 和 WatchKit App,不启动 IOS App

WatchKit:在通知短外观和长外观中更改应用名称?

watchkit 应用程序的企业配置?

Apple Watch: WatchKit 应用程序要点

WatchKit 和 CoreData 的奇怪问题

Apple Watch、WatchKit 和 NSUserDefaults [重复]