Тип type
должен быть T.Type
func get<T>(type: T.Type, forKey key: String) -> [T] { ...
и вы должны назвать это
return get(type: Favorite.self, forKey: UD_FAVORITES)
На самом деле вам не нужен параметр, это Swift, компилятор может определить тип (указанный типом возврата [Favorite]
)
func get<T>(valueForKey key: String) -> [T] {
и
return get(valueForKey: UD_FAVORITES)
А есть
if let data = self.data(forKey: key) {