如何使用Swift CoreData删除表中的特定行

时间:2015-03-12 16:24:08

标签: ios swift core-data

我是Swift编程的新手。我在我的应用程序中使用CoreData作为数据库选项。

我使用NSManagedObject(deleteObject)删除表中的lastObject,firstObject和整行。

我想通过使用存储在变量中的值来删除表中的特定行。我没有使用表视图(我没有任何索引路径),这个删除操作是我从我的应用程序服务器得到响应后的后台进程。

任何链接,教程或建议都会有所帮助。

提前致谢!!!

删除lastObject的代码

    if var results1 = context.executeFetchRequest(requestParams, error: nil) as? [Params] {
        println("\n Params Results count : \(results1.count)")
        for param in results1{

            for var n = 0 ;n < results1.count; ++n
            {

            let lastPerson = (results1 as NSArray).lastObject as Params
            context.deleteObject(lastPerson)
            var savingError: NSError?
            context.save(&savingError)


            }

        }
    }

Params表由列&#39; pname&#39;组成。和&#39; pvalues&#39;。 我想删除一个特定的参数pname =&#39; server_timeout&#39;。

考虑是否&#39; Params&#39;表由10行组成,&#39; pname&#39; =&#39; server_timeout&#39;可能出现在指数5,6。

如何找到&#39; pname&#39; (即&#39; server_timeout&#39;)在此记录列表中删除它?

1 个答案:

答案 0 :(得分:3)

如何创建一个谓词,该谓词首先将列表过滤到pname值为server_timeout的人。

context.performBlock {
    requestParams.predicate = NSPredicate(format: "pname == %@", "server_timeout")
    if let results = context.executeFetchRequest(requestParams, error: nil) as? [Params] {
        for param in results {
            context.deleteObject(param)
        }
        var error: NSError?
        if !context.save(&error) {
            println(error)
        }
    }
}

如您所见,我已将整个搜索和删除放在performBlock闭包中。我不知道你是如何设置你的核心数据的,但是你可能想要考虑线程来最大化感知性能。