gpt4 book ai didi

Swift通用数据转换函数

转载 作者:行者123 更新时间:2023-11-28 10:47:17 24 4
gpt4 key购买 nike

我想创建一个通用函数来将存储的数据转换为不同的数据类型,例如:

import UIKit
import AVKit

func represent<T>(_ data: Data) -> T? {

switch T.self {

case is UIImage:
guard let image = UIImage(data: data) else { return nil }
return image
case is AVAudioPlayer:
guard let audio = try? AVAudioPlayer(data: data) else { return nil }
return audio

default:
return nil
}
}

现在我得到“从‘T.Type’到无关类型‘UIImage’/‘AVAudioPlayer’的转换总是失败”。这里出了什么问题?谢谢。

最佳答案

我会在这里使用协议(protocol),而不是将自己锁定在固定的、不可扩展的受支持类型(那些你在 switch 语句中硬编码的类型)中:

import UIKit
import AVKit

protocol DataInitializable {
init?(data: Data) throws
}

extension UIImage: DataInitializable {}
extension AVAudioPlayer: DataInitializable {}

extension Data {
func decode<T: DataInitializable>() -> T? {
do {
return try T(data: self)
}
catch {
return nil
}
}
}

关于Swift通用数据转换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47948226/

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