IOS应用和观看分机

时间:2016-05-27 22:25:26

标签: ios watchkit watch-os

我有一个带手表扩展的IOS应用程序。我使用带有核心数据的只读SQLite文件(已填充且未编辑)。

使用此代码访问捆绑包资源中的文件可以正常工作。

- (NSURL *)storeURL{
    NSString * databaseFileName = @"db.sqlite";
    return  [NSURL fileURLWithPath: [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: databaseFileName]];
}

但是,此代码会创建一个新的sqlite文件并将其附加到NSPersistentStoreCoordinator:

- (NSURL *)applicationDocumentsDirectory {
    return [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.xxx.xxx"];
}

- (NSURL *)storeURL{
    NSString * databaseFileName = @"db.sqlite";

    NSURL * url = [self applicationDocumentsDirectory];
    NSString * path = [url.absoluteString stringByAppendingPathComponent:databaseFileName];

    path = [path stringByReplacingOccurrencesOfString:@"file:" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, path.length)];

    return [NSURL fileURLWithPath: path];
}

如何将SQLite文件添加到Xcode中的共享应用程序组容器中?

1 个答案:

答案 0 :(得分:0)

虽然在watchOS 1中可以实现这一点(因为手表扩展程序曾经在iPhone上运行),但您无法再使用共享应用程序组在iPhone和Apple Watch之间共享Core Data存储。

可以做的是在watchOS应用包中添加该只读SQLite文件的副本,方法是将其添加到watch app的目标中。然后,您可以使用原始storeURL代码将该商店添加到持久性商店协调员。

enter image description here

唯一的缺点是分发会更大,因为嵌入式监视应用程序现在包含SQLite文件的单独副本。