Skip to main content
 首页 » 数据库

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

2024年01月01日83www_RR

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

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

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

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

提前致谢!!!

删除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 表由列“pname”和“pvalues”组成。 我想删除一个特定的参数 pname ='server_timeout'。

考虑“Params”表是否包含 10 行,并且“pname”=“server_timeout”可能出现在索引 5、6 处。

如何在此记录列表中找到“pname”(即“server_timeout”)并将其删除?

请您参考如下方法:

如何创建一个谓词来过滤掉那些首先具有 server_timeout 的 pname 值的列表。

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 闭包中。我不知道你是如何设置你的核心数据的,但你可能想考虑线程来最大化感知性能。