我正在尝试翻译一些 Objective-C 代码:
NSArray *containers = [layoutManager textContainers];
NSUInteger lastUsedContainerIndex = [containers indexOfObjectIdenticalTo:textContainer];
对斯威夫特:
let textContainers = layoutManager.textContainers
let lastUsedContainerIndex = textContainers.indexOfObjectIdentical(to: textContainers)
其中 layoutManager 是 NSLayoutManager 类型。我在 Swift 代码的最后一行收到此错误:
“[NSTextContainer]”类型的值没有成员“indexOfObjectIdenticalTo”
不明白这个。我已经搜索了 Swift 和 NSArray 的文档,indexOfObjectIdenticalTo
但它没有出现在 Xcode 的自动完成中,并且给了我这个错误。我是 Swift 的新手,所以想知道我在这里错过了什么?
在 Swift 中,这是作为Foundation.NSArray.indexOfObjectIdentical(to:)
. 这在 上不可用Swift.Array
,因此您首先必须将您的 桥Array
接到NSArray
,因此将拼写为:
let textContainers = layoutManager.textContainers
let lastUsedContainerIndex = NSArray(textContainers).indexOfObjectIdentical(to: textContainer)
但在 Swift 中,这将更传统地写为:
let textContainers = layoutManager.textContainers
let lastUsedContainerIndex = textContainers.firstIndex(where: { $0 === textContainer })
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句