为什么 Xcode 无法识别 swift 数组中的 indexOfObjectIdenticalTo?
Why is Xcode not recognizing indexOfObjectIdenticalTo in swift array?
我正在尝试翻译一些 Objective-C 代码:
NSArray *containers = [layoutManager textContainers];
NSUInteger lastUsedContainerIndex = [containers indexOfObjectIdenticalTo:textContainer];
到Swift:
let textContainers = layoutManager.textContainers
let lastUsedContainerIndex = textContainers.indexOfObjectIdentical(to: textContainers)
其中layoutManager是NSLayoutManager类型。我在 Swift 代码的最后一行收到此错误:
Value of type '[NSTextContainer]' has no member
'indexOfObjectIdenticalTo'
不理解这个。我在文档中搜索了 Swift 并且 NSArray 有 indexOfObjectIdenticalTo
但它没有出现在 Xcode 的自动完成中并且给我这个错误。我是 Swift 的新手,所以想知道我在这里错过了什么?
[NSTextContainer]
不是 NSArray
的实例。您可以尝试将数组转换为 NSArray
.
在 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: { [=11=] === textContainer })
我正在尝试翻译一些 Objective-C 代码:
NSArray *containers = [layoutManager textContainers];
NSUInteger lastUsedContainerIndex = [containers indexOfObjectIdenticalTo:textContainer];
到Swift:
let textContainers = layoutManager.textContainers
let lastUsedContainerIndex = textContainers.indexOfObjectIdentical(to: textContainers)
其中layoutManager是NSLayoutManager类型。我在 Swift 代码的最后一行收到此错误:
Value of type '[NSTextContainer]' has no member 'indexOfObjectIdenticalTo'
不理解这个。我在文档中搜索了 Swift 并且 NSArray 有 indexOfObjectIdenticalTo
但它没有出现在 Xcode 的自动完成中并且给我这个错误。我是 Swift 的新手,所以想知道我在这里错过了什么?
[NSTextContainer]
不是 NSArray
的实例。您可以尝试将数组转换为 NSArray
.
在 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: { [=11=] === textContainer })