HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何拆除核心数据堆栈?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想为我的Core Data应用程序添加单元测试,但我确定如何重置测试之间的上下文.

这是我的CoreDataStack对象:

public final class CoreDataStack {
    var storeType: StoreType!
    public init(storeType: StoreTypE) {
        self.storeType = storeType
    }

    lazy var persistentContainer: NSPersistentContainer = {
        let container = NSPersistentContainer(name: "transaction")
        container.loadPersistentStores(completionHandler: { (description,error) in
            if let error = error {
                fatalError("Unresolved error \(error),\(error.localizedDescription)")
            } else {
                description.type = self.storeType.type

            }
        })

        return container
    }()

    public var context: NsmanagedObjectContext {
        return persistentContainer.viewContext
    }
}

这就是我在测试中使用它的方式:

class PaymentTests: XCTESTCase {

    var context: NsmanagedObjectContext!

    override func setUp() {
        super.setUp()

        let coreDataStack = CoreDataStack(storeType: .inMemory)
        context = coreDataStack.context
    }
}

我试图在tearDown函数调用context.reset()但是,数据没有重置,它总是持久的.

那么如何拆除核心数据堆栈呢?

解决方法

旧数据与您的上下文无关,而是与您的PersistentStore无关.这就是您使用COre Data的原因,可以保留您的数据.

在setup()中初始化堆栈之前,删除商店以删除数据.你可以这样找到它:

let storeUrl = persistentContainer.persistentStoreCoordinator.persistentStores.first!.url!

删除它像这样:

let fileManager = FileManager.default
fileManager.removeItem(at: storeUrl)

大佬总结

以上是大佬教程为你收集整理的ios – 如何拆除核心数据堆栈?全部内容,希望文章能够帮你解决ios – 如何拆除核心数据堆栈?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。