2015-02-10 108 views
0

如何將NSArray轉換爲NSManagedObject?我想刪除uname字段中包含nurdin的對象。Swift - 無法將表達式的類型'NSArray'轉換爲類型'NSManagedObject'

 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) 

我的問題是我無法刪除,因爲這個問題

Cannot convert the expression's type 'NSArray' to type 'NSManagedObject' 

請諮詢的對象。

回答

0

正如你可以看到the reference library documentation,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)") 
} 
相關問題