簡體   English   中英

IOS應用程序和手表擴展之間的共享文件

[英]Shared files between IOS app and watch extension

我有一個表擴展的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中的共享應用程序組容器中?

盡管在watchOS 1中可以做到這一點(因為手表擴展名曾經在iPhone上運行),但是您不能再使用共享的應用程序組在iPhone和Apple Watch之間共享Core Data存儲。

可以做的就是將只讀SQLite文件的副本添加到watchOS應用程序包中,方法是將其添加到watch應用程序的目標中。 然后,您可以使用原始的storeURL代碼將該商店添加到持久性商店協調器。

在此處輸入圖片說明

唯一的缺點是分布會更大,因為嵌入式監視應用程序現在包含SQLite文件的單獨副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM