gpt4 book ai didi

swift - 创建没有任何持久数据的 NSPersistentContainer

转载 作者:搜寻专家 更新时间:2023-11-01 05:32:18 26 4
gpt4 key购买 nike

我像这样创建一个 NSPersistentContainer:

static let persistentContainer: NSPersistentContainer =  {
let container = NSPersistentContainer(name: "MyUselessApp")

container.loadPersistentStores(completionHandler: { (nsPersistentStoreDescription, error) in
guard let error = error else {
// Everything went well
return
}

fatalError(error.localizedDescription)
})

return container
}()

它加载所有保存的数据/对象。是否可以创建一个没有任何数据的 NSPersistentContainer,但仍保留我在 MyUselessApp.xcdatamodeld 中定义的所有实体?

我想这样做是因为我有一个 UIViewController 和一个 NSFetchResultController,但是每次显示 UIViewController 时,数据都需要被刷新(我不能缓存任何东西)。我目前的做法是删除 NSPredicate 将从 NSFetchResultController 返回的每个对象。这对我来说似乎是无用的一步。我所有包含动态数据的 TableView 都使用 NSFetchResultController,我更喜欢继续以这种方式使用它。

最佳答案

事实证明这是我唯一需要做的事情:

let persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "InMemoryCoreDataContainer")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()

lazy var mockPersistantContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "InMemoryCoreDataContainer", managedObjectModel: persistentContainer.managedObjectModel)
let description = NSPersistentStoreDescription()

description.type = NSInMemoryStoreType
description.shouldAddStoreAsynchronously = false // Make it simpler in test env

container.persistentStoreDescriptions = [description]

container.loadPersistentStores { (description, error) in
precondition( description.type == NSInMemoryStoreType )

if let error = error {
fatalError("Create an in-mem coordinator failed \(error)")
}
}
return container
}()

关于swift - 创建没有任何持久数据的 NSPersistentContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55092876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com