核心数据删除具有相同名称的对象

时间:2014-11-07 13:30:53

标签: ios swift object core-data

//taken from Core Data    
var items:NSMutableArray = ["Item 1","Item 2","Item 1","Item 3"]

    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
         if(editingStyle == .Delete){
            let itemName = items.objectAtIndex(indexPath.row) as String
            //delete all rows in core data with this item name
         }
    }

如何删除Core Data中具有字段名“itemName”的所有行?

2 个答案:

答案 0 :(得分:2)

创建NSFetchRequest并使用您的商品名称设置NSPredicate。执行此获取请求会为您提供包含该谓词的所有NSManagedObjects的数组。

然后迭代该数组并调用NSManagedObjectContext的方法deleteObject(object)

let fetchRequest = NSFetchRequest(entityName: "yourEntityName")
fetchRequest.includesSubentities = false
fetchRequest.returnsObjectsAsFaults = false

fetchRequest.predicate = NSPredicate(format:"name == '\(itemName)'")

var error: NSError?

// moc is your NSManagedObjectContext here
items = moc.executeFetchRequest(fetchRequest, error: &error)!

for item in items {
    moc.deleteObject(item)
}

答案 1 :(得分:1)

试试这个

  if let index = find(items, items.objectAtIndex(indexPath.row))

              {
                 items.removeAtIndex(index)

              }