假设您的意思是 Core Data 持久存储(Core Data 没有表),这是我过去使用的一种方法。
在您的应用程序中的模拟器(甚至设备上)中创建持久存储,使用您在测试时用来创建它的相同代码。在您的 Mac 上找到该文件,或从您的设备中提取它。您现在有一个(可能是 SQLite)文件,其中包含您的初始数据。
现在将该文件作为资源添加到您的 .xcodeproj 中。在构建应用时,您现在会将初始化数据作为捆绑包的一部分包含在内,并且可以在启动时搜索它。
这是静态商店的示例代码。如果您希望能够更新它,您将需要做更多工作来从静态存储初始化实时存储。
let persistentContainer = NSPersistentContainer(name: "XYZZY")
let storeURL = URL.init(fileURLWithPath: Bundle.main.path(forResource: "XYZZY", ofType: "sqlite")!)
let psDescription = NSPersistentStoreDescription(url: storeURL)
psDescription.setOption(true as NSObject, forKey: NSReadOnlyPersistentStoreOption)
persistentContainer.persistentStoreDescriptions = [psDescription]
persistentContainer.loadPersistentStores() { (description, error) in
if let error = error {
fatalError("Failed to load Core Data stack: \(error)")
}
}
如果文件很大,您可能希望在创建它时对其执行真空操作。此时,值得拥有一个单独的 Mac 程序来从您的文本文件创建初始持久存储。
这是一种从 Mac 导入器中查找 SQLite 文件的方法:
if let cdFolder = self.importer.datastoreURL()?.path {
print("open", cdFolder)
NSWorkspace.shared.openFile(cdFolder)
}
func datastoreURL() -> URL? {
if let cdFolder = persistentContainer.persistentStoreDescriptions[0].url?.deletingLastPathComponent() {
return cdFolder
}
return nil
}
这会在控制台上为您提供一行,您可以在终端中复制/粘贴。