从CoreData获取比较和删除字符串


  1. 我想从CoreData中删除自定义单元格中UILabel提供的单个字符串。因此,从表视图中删除一行是行不通的。

  2. 此外,我想检查CoreData值中是否有特定的字符串。

例如:

我有一个名为"收藏夹"的实体,其属性名为"服务",插入的字符串名为"micro"。我想删除"micro"。此外,我想检查"micro"(例如)是否在属性"services"和实体"Favorites"的字符串中。

我试过这个:

1.

let serString = servico.text
        let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        let contexto:NSManagedObjectContext = appDel.managedObjectContext
        let entidade = NSEntityDescription.entityForName("Favorites", inManagedObjectContext: contexto)
        let pedido = NSFetchRequest(entityName: "Favorites")
        pedido.predicate = NSPredicate(format: "service = %@", serString!)
        let p:Favorites? = Favorites(entity: entidade!, insertIntoManagedObjectContext: contexto)
            contexto.deleteObject(p!)

但它并没有删除字符串"serString"

2。尝试过这个:

var request : NSFetchRequest = NSFetchRequest(entityName: "Favorites");
    request.predicate = NSPredicate(format: "services = %s", "micro")
    let results : [NSManagedObject] = context.executeFetchRequest(request, error: &error)
    if (results.count > 0) {
        print("exists")        }
    else {
        //Doesn't exist
    }

但在"&error"中给出错误,称"使用未解析的标识符‘error’"

2(b)。

也尝试过这个,但崩溃了应用程序输出给

"打印错误描述:(NSError)error="超出范围"

(lldb)"

let request : NSFetchRequest = NSFetchRequest(entityName:     "Favorites");
    request.predicate = NSPredicate(format: "services = %s", "micro")
do {
let results : [NSManagedObject] = try   context.executeFetchRequest(request) as! [Favorites]
if (results.count > 0) {
            print("exists")        }
        else {
            //Doesn't exist
        }
        // success ...
    } catch let error as NSError {
        // failure
        print("Fetch failed: (error.localizedDescription)")
    }

更新:

  1. 这段代码最终删除了字符串:

    let favoriteFetchRequest = NSFetchRequest(entityName:"Favorites")
        let predicate = NSPredicate(format: "services = %@", serv)
        favoriteFetchRequest.predicate = predicate
    do {
       let fetchedEntities = try       context.executeFetchRequest(favoriteFetchRequest) as! [NSManagedObject]
    for entity in fetchedEntities {
    context.deleteObject(entity)
    try context.save()
    }
    } catch let error as NSError {
    print("Fetch failed: (error.localizedDescription)")
    }
    

2号有什么帮助吗?

1。我认为你需要这样的东西:

       contexto.deleteObject(p!)
        do {
            try contexto.save()
            print("Borrado ")
        } catch _ as NSError {
            print( "Error en delete")
        }

最新更新