[英]Cast to generic type in Swift 5
我想編寫一個通用的 function,它使用核心數據框架在本地獲取某種數據。 我這樣寫了 function:
func fetch<T:NSManagedObject>(type: T.Type = T.self, completion: @escaping (([T]?) -> ())) {
do {
let data = try context.fetch(T.fetchRequest()) as [T]
completion(data)
} catch {
completion(nil)
}
}
但是,編譯器告訴我這個錯誤“無法將類型'[Any]'的值轉換為強制類型'[T]',arguments 到泛型參數'Element'('Any'和'T')預計相等"
有沒有可能做這種演員?
試試下面的代碼:
func fetch<T:NSManagedObject>(type: T.Type = T.self, completion: @escaping (([T]?) -> ())) {
do {
let data = try context.fetch(T.fetchRequest()) as? [T]
completion(data)
} catch {
completion(nil)
}
}
(正如 Sweeper 指出的fetch
返回一個數組,因此您必須將結果轉換為[T]
而不僅僅是T
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.