如何从swift 2中的核心数据中删除值

时间:2015-11-11 02:44:42

标签: ios swift core-data

例如,这里是我的代码中添加值的部分

do {
        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "users")
        let results = try context.executeFetchRequest(request)

        if results.count > 0 {
            for item in results as! [NSManagedObject] {
                let fName = item.valueForKey("firstName")
                let lName = item.valueForKey("lastName")
                print(lName!, lName!)
            }
        }

    } catch {
        print("There was error getting data")
    }

假设我有10个用户,现在我想

 1.删​​除“DOW”lastName的用户
 2.前2位用户和最后2位用户?
 3.此外,lastName的所有用户都以“D”开头

由于 博尔纳

2 个答案:

答案 0 :(得分:2)

您可以编码:

if results.count > 0 {
    for item in results as! [NSManagedObject] {
        let fName = item.valueForKey("firstName") as! String
        let lName = item.valueForKey("lastName")
        print(lName!, lName!)
        if fName.contains("DOW"){
            appDelegate.managedObjectContext.deleteObject(item)
        }
    }
}

或者只是获取你想要的对象NSPredicate并将其删除 代码:

let fetchRequest = NSFetchRequest(entityName: "users")
    fetchRequest.predicate = NSPredicate(format: "firstName beginswith[c] %@", "D")
    fetchRequest.returnsObjectsAsFaults = false
    do{
        let fetchResults = try appDelegate.managedObjectContext..executeFetchRequest(fetchRequest)
        if fetchResults.count>0 {
              appDelegate.managedObjectContext.deleteObject(fetchResults[0])
        } else {
            // no data
        }
    }catch{
        //error
    }

答案 1 :(得分:0)

这个问题听起来像是家庭作业。删除前2项和后2项的问题是数据是无序存储的。除非提供排序顺序,否则您可能会从获取请求中获取不同的数据集。