gpt4 book ai didi

swift - 如何从 Swift 协议(protocol)返回 `[Self]`?

转载 作者:行者123 更新时间:2023-11-28 06:50:55 25 4
gpt4 key购买 nike

我有一个协议(protocol)实现如下。

protocol DatabaseInjectable {

static func deriveObjectFromDBRow(row: [String]) -> Self? // Method - 1

static func collectAllObjectsForDatabaseAction(action: (Database) -> Void) -> [Self]? // Method - 2
}

我在Method - 1 的对应实现中取得了成功,如下所示:

static func deriveObjectFromDBRow(row: [String]) -> Self? {

...
}

但我无法像这样实现 Method - 2:

static func collectAllObjectsForDatabaseAction(action: (WWDatabase) -> Void) -> [Self]? {

...
}

我遇到这样的错误:

'Self' is only available in a protocol or as the result of a method in a class;

任何帮助返回 数组形式的 Self(它自己的类)都会很好。

最佳答案

如果你可以设置你的类 final 你可以用类名替换 Self

final class SampleClass: DatabaseInjectable {
init() {
}
static func deriveObjectFromDBRow(row: [String]) -> SampleClass? {
return SampleClass()
}

static func collectAllObjectsForDatabaseAction(action: (Database) -> Void) -> [SampleClass]? {
let array = [SampleClass]()
return array
}
}

关于swift - 如何从 Swift 协议(protocol)返回 `[Self]`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34942852/

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