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