2017-09-26 76 views
0

如何在Swift中將NSManagedObject轉換爲子類實體RelationshipSwift:Up將NSManagedObject轉換爲實體的子類

func processEntity(updates: [NSManagedObject]) -> [Relationship] { 
     let relationship = updates.filter({$0.entity.name == "Relationship"} 
     // here how do I return an array of [Relationship] 
} 

回答

2

不要比較名稱,只做一個正常的演員。

func processEntity(updates: [NSManagedObject]) -> [Relationship] { 
    return updates.flatMap({ $0 as? Relationship }) 
} 

如果你不熟悉它,flatMap基本上是filter加上map。如果塊返回nil,則從結果數組中省略該元素,否則該數組將包含該塊返回的值。所以在這種情況下,我們正在查看每個NSManagedObject並說「你真的是Relationship?」,我們保留的值是Relationship s。

+0

@Abizern請不要刪除我的括號。見[凱文法則](http://ericasadun.com/2015/11/17/a-handful-of-swift-style-rules-swiftlang/)。 –

+0

對不起,只是試圖幫助,但鏈接讓我明白你的意思。謝謝。 – Abizern