gpt4 book ai didi

swift - 删除类型别名 Swift 数组中的元素

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

我正在尝试在 Swift 中实现一个通知中心

对于给定的类型别名(我不想改变它)

typealias Observer = (_ name: String, _ data: Any) -> Void

你可以有一个这样的数组:

var observers = [Observer]()

但是我怎样才能删除任何给定的观察者名称呢?

如果我有一个观察者“myObs”

for i in 0..<observers.count {
if observers[i].name == "myObs" {
observers.remove(at: i)
return
}
}

不会删除该元素,因为任何观察者都没有属性名称。

我想使用符合 AnyObject 的协议(protocol),但我需要将名称存储在协议(protocol)中,并将其包含在类型别名中。

我有一些根本性的误解......但它是什么?

最佳答案

你只需像下面这样使用字典[String: Observer]:

typealias Observer = (_ name: String, _ data: Any) -> String
let obs: Observer = { (name, data) in
return name
}
let obs1: Observer = { (name, data) in
return name
}
var observers = [String: Observer]()
observers[obs("MyObs", "some data")] = obs
observers[obs1("MyObs1", "some data")] = obs1

print(observers)
observers["MyObs"] = nil
print(observers)

输出是:

"["MyObs": (Function), "MyObs1": (Function)]\n"
"["MyObs1": (Function)]\n"

关于swift - 删除类型别名 Swift 数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55133422/

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