Swift创建协议

wyyhbhjk  于 2023-06-21  发布在  Swift
关注(0)|答案(1)|浏览(140)

如何将数据模型中的以下变量表示为协议:
它建模的数据是JSON,格式为
“imageName”:“图片1”
模型根据上面的(imageName)初始化图像

struct ResultsModel: Codable, Identifiable, Hashable {

    var id: Int
    var name: String
    var imageName: String
    var image: Image {
            Image(imageName)
        }
}
protocol Attachment {

    var id: Int { get set }
    var name: String { get set }
    var imageName: String { get set }

    var image : Image {
            Image(imageName)
        }
}

我得到错误“Expected get or set in a protocol property”,但是我在哪里添加它呢?或者我如何编写一个协议,通过字符串初始化图像?
我试过添加get set到

var image: Image {
        Image(imageName) 
} {get set}

var image: Image {get set} {
        Image(imageName) 
}

但两者都返回“Expected get or set in a protocol property”

ekqde3dh

ekqde3dh1#

Swift协议不能用默认实现定义属性,但你可以用协议扩展来定义。见下文:

protocol Attachment {
    var id: Int { get set }
    var name: String { get set }
    var imageName: String { get set }

    var image : Image { get }
}

extension Attachment {
    var image: Image {
        return Image(self.imageName)
    }
}

相关问题