【问题标题】:Search array for a value [swift]在数组中搜索一个值 [swift]
【发布时间】:2018-10-28 19:09:39
【问题描述】:

刚开始学习 swift,花了几个小时试图通过在这里搜索来解决这个问题,但到目前为止没有运气。

我有一个数组,像这样创建的:

class ProbabilitiesClass {
    var list = [Odds]()

    init() {
        list.append(Odds(dateInit: -35, oddsTodayInit: "0,01", sevenDaysInit: "0,2"))
        list.append(Odds(dateInit: -34, oddsTodayInit: "0,01", sevenDaysInit: "0,3"))
        list.append(Odds(dateInit: -33, oddsTodayInit: "0,02", sevenDaysInit: "0,4"))

我想在这个数组的第一个参数中搜索一个整数并返回它的索引。

试过了

if let i = Odds.firstIndex(where: { $0.hasPrefix(differenceInDays) }) {
    print("index is \([i])")
}

返回错误:

类型“赔率”没有成员“firstIndex”

最终目标是返回该索引的第二个和第三个参数。

更新:我这样定义赔率:

import Foundation

class Odds {
    let dateText : Int
    let oddsToday : String
    let odds7Days : String

    init(dateInit: Int, oddsTodayInit: String, sevenDaysInit : String) {
        dateText = dateInit
        oddsToday = oddsTodayInit
        odds7Days = sevenDaysInit
    }

}

【问题讨论】:

  • 你想要list.firstIndex。但是$0 将是对Odds 实例的引用。
  • 谢谢,现在试试。所以它不完全是我创建的数组,它是一个列表吗?
  • 它是一个数组。并且变量的名字是list
  • 听起来您应该花一些时间阅读 Swift 书的 Collection Types 章节(连同本书的其余部分)。
  • 我不明白你想要达到什么目的?您想要具有特定前缀的元素索引吗?

标签: arrays swift sorting


【解决方案1】:

你可以这样做:

let p = ProbabilitiesClass()
let differenceInDays = -34
if let i = p.list.firstIndex(where: { $0.dateText == differenceInDays }) {
    print("index is \([i])")   //index is [1]
}

ProbabilitiesClass 实例的list 属性中查找索引。就像错误消息说的那样:Odds 类不是一个数组,不能在上面使用方法firstIndex(where:)


如果您想使用其dateInit 等于differenceInDays 的第一个元素的属性,那么您可以这样做:

if let first = p.list.first(where: { $0.dateText == differenceInDays }) {
    print("oddsTodayInit =", first.oddsToday)
    print("sevenDaysInit =", first.odds7Days)
}

它使用这个函数first(where:)

【讨论】:

  • Odds 的属性名为dateText(但它是Int。)初始化器上的参数称为dateInit
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 2018-08-09
  • 2015-05-30
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
相关资源
最近更新 更多