gpt4 book ai didi

ios - Swift 面向协议(protocol)编程 : Can Protocol Extension Property Have Same Name As Base Class Property

转载 作者:搜寻专家 更新时间:2023-11-01 07:14:13 25 4
gpt4 key购买 nike

场景

我正在开发将在两个独立项目中使用的 SDK。两个项目都将使用 CoreData,SDK 需要提供存在于两个项目的托管对象模型中的数据。为此,我采用面向协议(protocol)的设计来为 SDK 获取所需的数据。


该项目将从包含其属性的 NSManagedObject 基类开始...

// Project
class Tag: NSManagedObject {
var name: String!
var code: String!
var items: [Any]!
...
}

这些名称基本而简单。当我们使此类符合协议(protocol)时,不必更改这些就好了。


SDK 声明了两个协议(protocol)。第一个协议(protocol)将是 SDK 填充其 View 所需的数据源。项目中的某些类将符合这一点并成为代表......

// SDK
protocol SDKDataSource {
func getTaggableObjects() -> [Taggable]
}

var delegate: SDKDataSource!

第二个协议(protocol)将是 SDK 对其项目的最后通牒,它将被提供的 NSManagedObject 应符合...

// SDK
protocol Taggable {
var name: String { get }
var code: String { get }
var items: [Any] { get }
}

在项目中,我将创建该类的扩展并同意该类符合 Taggable 协议(protocol)...

// Extension (in Project w/ SDK included)
extension Tag: Taggable {

var name: String {
get {
self.name
}
}

var code: String {
get {
self.code
}
}

var items: [Any] {
get {
self.items
}
}
}

这样当 SDK 向 getTaggableObjects() 请求它的数据源时,SDK 将从它可以理解的项目的 CoreData 模型接收对象。

问题

协议(protocol)扩展中的属性名称是否必须与基类中的属性名称不同,或者是否会完成上述工作?如果我在实现我的设计之前知道这是可以的,那就太好了。

最佳答案

我可以确认不允许使用相同的名称。

enter image description here

关于ios - Swift 面向协议(protocol)编程 : Can Protocol Extension Property Have Same Name As Base Class Property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43151939/

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