2016-11-22 7 views
0

NSManagedObjectを削除しようとしました。NSManagedオブジェクトを削除する

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でも研究していますが、これはうまくいくと思います。しかし、そうではありません。 希望するエンティティを削除するにはどうすればよいですか?私はそれがより良い解決策だと思っ

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") 
    } 

+0

正確には動作しません。 'results'は内容を持っていますか?そうでなければ、あなたの要求や述語に問題があります。 – Koen

+0

はい。私は他のエンティティーとまったく同じことをして、それはうまくいった。違いは、objectIDではなく属性を使用したことです。この場合は動作しません....しかし、私がコピーしたコードを使用して、それは動作します。 –

+0

'existingObjectWithID'を試して、特定のIDを持つenitiyを取得し、それを削除することもできます。 – Koen

答えて

1

私は別のことをやって、私はこれを並べ替えると思います。確かに!

関連する問題