我想删除核心数据表(DatiGame)中的所有行,该表由 4 个字段组成。 foto_bottone0 foto_bottone1 照片大师 文托 并且该表没有其他关系。
但是 DeletedObjects 操作返回以下错误:
'(NSManagedObject) -> $ T4' 与'NSSet' 不相同
import UIKit
import Foundation
import CoreData
class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 1
var appDell:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
var context:NSManagedObjectContext = appDell.managedObjectContext!
// 2
var request = NSFetchRequest(entityName: "DatiGame")
request.returnsObjectsAsFaults = false
println("pre fetch ")
// 3
var results = context.executeFetchRequest(request, error: nil)
if (results?.count > 0) {
for result: AnyObject in results! {
--> ERROR deleteObjects <--
context.deletedObjects(result as NSManagedObject) // ERROR
'(NSManagedObject) -> $ T4' is not identical to 'NSSet'"
context.save(nil)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
拜托,有人可以帮助我吗? 其他问题: 您可以不循环删除表中的所有行吗?谢谢谢谢
最佳答案
你调用了错误的函数。删除托管对象是通过
context.deleteObject(anObject)
。
deletedObjects
是一个(粗略地说)返回所有对象的属性
已标记为删除。
补充说明:
- 为了获得更好的性能,在所有对象都被删除后保存上下文。
- 使用
error
参数进行诊断,而不是传递nil
。 - 最好使用可选绑定(bind)来检查
executeFetchRequest()
是否成功 而不是测试results?.count
。
例子:
var error: NSError?
let results = context.executeFetchRequest(request, error: &error)
if let objects = results {
for object in objects as [NSManagedObject] {
context.deleteObject(object)
}
if !context.save(&error) {
println("save failed: \(error?.localizedDescription)")
}
} else {
println("fetch failed: \(error?.localizedDescription)")
}
关于IOS Swift - deletedObjects NSManagedObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27332867/