核心数据如何与托管对象交互?

时间:2018-02-27 12:27:44

标签: swift core-data

这是我的测试代码,我无法理解为什么print("db2: \(prod)")会写出我的元素具有属性belok = 10000的原因。但是我没有保存上下文,所以在DB中没有变化,没关系。我试图理解如何与DB和我的数组arrDBProducts进行交互。

var arrDBProducts: [DB_Product]

    func test() {
    let fetchRequest: NSFetchRequest<DB_Product> = DB_Product.fetchRequest()
    do {
        let prods = try CoreDB.context.fetch(fetchRequest)
        for prod in prods {
            print("db1: \(prod)")
        }
    }
    catch {}

    arrDBProducts[0].belok = 10000
    print("array: \(arrDBProducts)")

    let fetchRequest2: NSFetchRequest<DB_Product> = DB_Product.fetchRequest()
    do {
        let prods = try CoreDB.context.fetch(fetchRequest2)
        for prod in prods {
            print("db2: \(prod)")
        }
    }
    catch {}
}

1 个答案:

答案 0 :(得分:0)

您没有保存上下文,因此一旦您关闭并打开您的应用程序,或者您将尝试从其他上下文访问它 - 您将看不到这些更改。

但是,当您在一个上下文中工作时 - 您的更改将存在于其中,直到将释放上下文。