ios – Swift协议只能设置?

前端之家收集整理的这篇文章主要介绍了ios – Swift协议只能设置?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么我可以做到这一点没有任何错误
var testDto = ModelDto(modelId: 1)
testDto.objectId = 2

而我定义这个:

protocol DataTransferObject {
    var objectType: DtoType { get }
    var parentObjectId: Int { get set }
    var objectId: Int { get }
    var objectName: String { get set }
}

struct ModelDto: DataTransferObject {
    var objectType: DtoType
    var parentObjectId: Int
    var objectId: Int
    var objectName: String

    init(modelId: Int) {
        self.objectType = DtoType.Model
        self.objectId = modelId
        self.parentObjectId = -1
        self.objectName = String()
    }
}

如果我的协议中的定义大部分被忽略(getter,setter定义),为什么还要使用它?

解决方法

根据 official documentation

吸气剂和固化剂的要求可以通过各种方式的一致性类型来满足.如果属性声明包含get和set关键字,则一致的类型可以使用存储的变量属性或可读写的计算属性(即实现getter和setter的一个)来实现.但是,该属性声明不能实现为常量属性或只读计算属性.如果属性声明仅包含get关键字,则可以将其实现为任何类型的属性.

猜你在找的iOS相关文章