2015-08-22 72 views
2

我有NSManagedObject核心數據類中的方法,它返回匹配謂詞對象的數組:輕量級泛型和類方法

+ (NSArray *)objectsWhere:(NSPredicate *)predicate 

我想返回類型進行註釋,使得我不必須在Swift中進行演員陣容。

E.g,我想說:

let modelArray = Model.objectsWhere(predicate) 
    // Do stuff to an array of Models. 

而不是

if let modelArray = Model.objectsWhere(predicate) as? [Model] { 
    // Do stuff to an array of models. 
} 

這可能嗎?如果是這樣,一個人怎麼做?我試過了:

+ (NSArray<id>)objectsWhere:(NSPredicate* _Nonnull)predicate 

+ (NSArray<NSManagedObject *>)objectsWhere:(NSPredicate* _Nonnull)predicate 

+ (NSArray<__kindof NSManagedObject *>)objectsWhere:(NSPredicate* _Nonnull)predicate 

而且他們都堅持我把結果投給[Model]id不是一個驚喜,但我真的希望__kindof位可以工作,因爲所有型號都是NSManagedObject,但沒有。

+0

你試過的3個簽名的swift返回類型是什麼? – Kevin

+0

'Model'是所有模型類的基類?但是,'NSManagedObject'不是'Model'。顯示Swift代碼。 –

+0

你碰巧找到解決你的問題?因爲我處於相同的位置。 – Buju

回答

0

簡短的回答是,你不能這樣做,這是一種無賴。

0

我認爲__kindof只在Objective-C中使用,Swift類型沒有類似的構造。