2016-11-22 52 views
0

我一直在試圖刪除一個NSManagedObject。 這是我的代碼:刪除一個NSManagedObject

let app = UIApplication.shared.delegate as! AppDelegate 
    let context = app.persistentContainer.viewContext 
    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "MyEnt") 
    request.predicate = NSPredicate(format: "SELF = %@", EnttoDelete.objectID) 
    request.returnsObjectsAsFaults = false 

    do { 
     let results = try context.fetch(request) 

     if results.count > 0 { 

      for result in results as! [NSManagedObject] { 
       print ("Ent found")      
       context.delete(result) 

       do { 
       try context.save() 
       } catch { 
       print("failed to delete") 
       } 

      } 

     } 


    } catch { 

     print ("Error in do") 
    } 
} 

擁有你看,我有去Entitie也被刪除(EnttoDelete),併爲此它的ID(EnttoDelete.objectID)。 現在我已經研究過即使在stackoverflow,我認爲這應該工作。但事實並非如此。 如何刪除所需的實體?

+0

什麼不工作? 「結果」是否有任何內容?如果不是,那麼你的請求和/或謂詞就有問題。 – Koen

+0

是的。我做了與其他實體完全相同的事情,它的工作。區別在於我使用了一個屬性而不是objectID。在這種情況下,它不起作用....但是使用我複製下來的代碼,它可以工作... –

+0

您也可以嘗試'existingObjectWithID'來獲取具有特定ID的消息,然後將其刪除。 – Koen

回答

1

我覺得我有點這個,做不同的事情:

let app = UIApplication.shared.delegate as! AppDelegate 
    let context = app.persistentContainer.viewContext 
    var thisID: NSManagedObjectID = (thatLand?.objectID)! 
    let object = context.object(with: thisID) 
    context.delete(object) 

    do { 
     try context.save() 
    } catch { 
     print("failed to delete") 
    } 

我認爲這是更好的解決方案。雖然不確定!

相關問題