2016-04-12 6 views
-1
  1. Я хотел бы удалить одну строку, предоставленную UILabel в пользовательской ячейке, из CoreData. Таким образом, для удаления строки из tableview не работает.Извлечь строку сравнения и удаления из CoreData

  2. Кроме того, я хотел бы проверить, есть ли конкретная строка в значении CoreData.

Например:

У меня есть сущность с именем «Избранное» с атрибутом, именуемым «услуги» со строкой, что я вставленным под названием «микро». Я хочу удалить «микро». Кроме того, я хочу проверить, есть ли «микро» (например) в строках из атрибутов «службы» и сущности «Избранное».

Я попытался это:

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' '

2 (b).

попытался также это, но сбой приложения выход дает

"Описание Печать ошибки: (NSError) ошибка = "вне области"

(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.?

+0

У меня есть сущность с именем «Избранное» с атрибутом с именем «services» со строкой, которую я вставил с именем «micro». Я хочу удалить «микро». Кроме того, я хочу проверить, есть ли «микро» (например) в строках из атрибутов «службы» и сущности «Избранное». –

ответ

0

1. Я думаю, что вам нужно что-то вроде:

 contexto.deleteObject(p!) 

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

     } 
Смежные вопросы