2014-10-02 73 views
1

我想從我的店裏取數據,但出現以下錯誤斯威夫特類型轉換:從AnyObject

'Event' is not identical to 'AnyObject'

我有一個events變量,它是一個Event陣列。我猜想從取回請求返回的數據來自類型AnyObject。所以我嘗試將它轉換爲[Event],但它不起作用,我無法弄清楚原因。

var events: [Event] = [] 

func loadDataFromDB() { 
    let fetchRequest = NSFetchRequest(entityName: "Event") 
    events = context?.executeFetchRequest(fetchRequest, error: nil) as [Event] 
} 
+1

嘗試使用上下文!而不是上下文? – derdida 2014-10-02 08:28:24

+0

沒有沒有幫助,我已經嘗試過,但要求建議。 – Linus 2014-10-02 08:36:32

+0

更新:可能是它的工作,錯誤花費了10分鐘才能脫身。如果它真的有效,我會提供更新。謝謝! – Linus 2014-10-02 08:41:34

回答

0

當涉及可選的鏈接時,就像某種錯誤似的。使用這些替代解決方法:

events = context?.executeFetchRequest(fetchRequest, error: nil) as [AnyObject]? as [Event] 
events = (context?.executeFetchRequest(fetchRequest, error: nil))! as [Event] 
events = context!.executeFetchRequest(fetchRequest, error: nil) as [Event] 

爲了安全起見,我建議使用:

if let result = context?.executeFetchRequest(fetchRequest, error: nil) { 
    events = result as [Event] 
} 

由於executeFetchRequest回報nil如果有錯。

+0

這不是一個錯誤。 'executeFetchRequest()'返回'[AnyObject]?' - 可選 – newacct 2014-10-02 20:07:59

+0

不是,但是您可以將'context?.executeFetchRequest(fetchRequest,error:nil)作爲[AnyObject]強制轉換? as [Event]',但不能強制轉換'context?.executeFetchRequest(fetchRequest,error:nil)as [Event]' – Kirsteins 2014-10-03 06:24:59