在Swift中重置核心数据属性

时间:2018-01-04 22:16:00

标签: swift core-data attributes

在我的应用程序中,我已经建立了一个名为" Finances"的核心数据实体。目前它有两个属性:金钱和净资产。

我希望编写一个函数,每次调用它时,它都会删除特定实体的所有结果。一个例子可能是:

    func resetAttribute(attribute: String) {

    }

PS:我在互联网上找到了一个功能,它被设计成只删除与字符串匹配的属性的特定元素。我已按以下方式修改了代码:

func resetTest() {
    if let dataAppDelegatde = UIApplication.shared.delegate as? AppDelegate {

        let mngdCntxt = dataAppDelegatde.persistentContainer.viewContext
        let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "ApplicationFinances")
        let predicate = NSPredicate(format: "money != %@", "vdavduabsdpansuryiubj")

        fetchRequest.predicate = predicate

        do {
            let result = try mngdCntxt.fetch(fetchRequest)

            print(result.count)

            if result.count > 0 {
                for object in result {
                    print(object)
                    mngdCntxt.delete(object as! NSManagedObject)
                }
            }
        } catch{

        }
    }
}

这意味着,如果钱不等于vdavduabsdpansuryiubj(当然意思不是),它就会删除其他值。但这似乎不起作用。

1 个答案:

答案 0 :(得分:0)

运行该功能会发生什么?它会抛出错误吗?或者它打印得很好并且运行正常但重新加载核心数据时实际上没有发生任何事情?如果是这种情况,请尝试添加:

do {
    try mngdCntxt.save()
} catch {}

for循环结束后