gpt4 book ai didi

ios - Swift Array.indexOf 包含 nil 值

转载 作者:搜寻专家 更新时间:2023-11-01 06:19:53 28 4
gpt4 key购买 nike

我正在开发一个应用程序,我需要了解一些东西,因为如果没有解决我的问题我就无法继续。我有以下类型的数组:

var samples : [HKSample?]!

现在我想知道这个数组是否包含特定元素以及该元素的索引是什么。当我试图像这样获取索引时

let anotherSample : HKSample = otherSamples.first
let index = samples.indexOf(anotherSample)

我收到以下错误:

"Cannot convert value of type 'HKSample?' to expected argument type '@noescpae (HKSample?) throws -> Bool'

请帮帮我!

最佳答案

let anotherSample : HKSample = otherSamples.first

这是不正确的(并且不应编译)。 first 将在此处返回 HKSample?

鉴于此,您要在 [HKSample?] 中搜索 HKSample?。问题是 Optional 不是 Equatable,所以你必须使用 indexOf 的谓词形式:

let index = samples.indexOf { $0 == anotherSample }

(其中 anotherSampleHKSample?,而不是 HKSample。)

Optional 的底层类型为 Equatable 时,Optional 确实有一个可用的 == 函数,但它本身不是 Equatable 因为您目前无法遵守带有 where 子句的协议(protocol)。为了使 Optional 符合要求,您必须能够编写:

extension Optional: Equatable where Wrapped: Equatable {}

但是 Swift 目前不支持这种方式。你会得到:

error: extension of type 'Optional' with constraints cannot have an inheritance clause

关于ios - Swift Array.indexOf 包含 nil 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35893952/

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