gpt4 book ai didi

swift - NSObject 类符合 Swift 中 NSArray 中包含的协议(protocol)

转载 作者:行者123 更新时间:2023-11-30 10:14:39 25 4
gpt4 key购买 nike

我想在 Swift 中创建一个方法,它返回符合协议(protocol)的 NSObject 对象数组。我尝试过这样的事情:

func createManagers() -> [Manager] {
let result = NSMutableArray(capacity: self.classes.count)
(self.classes as NSArray).enumerateObjectsUsingBlock { (object: AnyObject!, idx: Int, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
// TODO: do something and fill the result array
}
return result as NSArray as! [Manager]
}
如您所见,

Manager 是一个协议(protocol)。我收到错误消息,指出 return 语句中的转换始终会失败。
我想告诉编译器我有一个 NSObject 类型的对象数组,并且所有元素都符合 Manager 协议(protocol)。

最佳答案

不要尝试用 Swift 编写 Objective-C。远离 NSObjectNSArrayNSMutableArray

这是您的代码,没有任何 Objective-C 类型:

func createManagers() -> [Manager] {
let result = [Manager]()
for (index, aClass) in classes.enumerate() {
// TODO: do something and fill the result array
}
return result
}

如果你想确保你的返回类型是NSObject的子类:

func createManagers<T: NSObject where T: Manager>() -> [T] {
var result = [T]()
for (index, aClass) in classes.enumerate() {
// TODO: do something and fill the result array
}
return result
}

关于swift - NSObject 类符合 Swift 中 NSArray 中包含的协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30862165/

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