斯威夫特回归"Cannot convert the expression's type 'NSArray' to type 'NSManagedObject'"



如何将NSArray转换为NSManagedObject?我想删除uname字段中包含nurdin的对象。

        let appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
        let credContext: NSManagedObjectContext = appDel.managedObjectContext!
        let request = NSFetchRequest(entityName: "Creds")
        request.returnsObjectsAsFaults = false
        request.predicate = NSPredicate(format: "uname = %@", "nurdin")
        var result: NSArray = credContext.executeFetchRequest(request, error: nil)!
        /* error here*/                
        credContext.deleteObject(result as NSManagedObject)

我的问题是我不能删除对象,因为这个问题

无法将表达式的类型"NSArray"转换为类型"NSManagedObject"

从参考库文档中可以看到,executeFetchRequests返回AnyObjects:[AnyObject]? 的可选列表

func executeFetchRequest(_ request: NSFetchRequest,
                       error error: NSErrorPointer) -> [AnyObject]?

你必须首先打开它,然后逐个删除每个对象:

var error: NSError?
if let objects = credContext.executeFetchRequest(request, error: &error) as? [NSManagedObject] {
    for obj in objects {
       credContext.deleteObject(obj)
    }
} else {
   // TODO: Error handling here
   println("Couldn't fetch objects (error)")
}

相关内容

最新更新