gpt4 book ai didi

swift - 无法将类型 '[Favorite.Type]' 的返回表达式转换为返回类型 '[Favorite]'

转载 作者:行者123 更新时间:2023-11-28 13:48:50 26 4
gpt4 key购买 nike

我想创建一个通用函数,用于从符合 NSObject 和 NSCoding 协议(protocol)的 UserDefaults 中获取元素。但是当我想使用那个函数时,我得到了这个错误

    func getFavorites() -> [Favorite] {
return get(type: Favorite, forKey: UD_FAVORITES)
}

Cannot convert return expression of type '[Favorite.Type]' to return type '[Favorite]'

这是我的 UserDefaults 扩展:

    func get<T>(type: T, forKey key: String) -> [T] {
if let data = self.object(forKey: key) as? Data {
do {
let tData = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as! [T]
return tData
} catch {
debugPrint(error)
return [T]()
}
} else {
print("EMPTY \(key)")
return [T]()
}
}

最佳答案

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) {

关于swift - 无法将类型 '[Favorite.Type]' 的返回表达式转换为返回类型 '[Favorite]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55033030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com