刚开始学习敏捷,花了几个小时试图通过在这里搜索来解决这个问题,但到目前为止还没有运气。
我有一个像这样创建的数组:
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])")
}
它返回错误:
类型'Odds'没有成员'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
}
}
答案 0 :(得分:1)
您可以这样做:
let p = ProbabilitiesClass()
let differenceInDays = -34
if let i = p.list.firstIndex(where: { $0.dateText == differenceInDays }) {
print("index is \([i])") //index is [1]
}
在list
实例的ProbabilitiesClass
属性中查找索引。就像错误消息说的那样:类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:)
。