首先,我们都知道,查找数组的索引很容易,但是我在查找一个包含多个结构体的数组中的项的索引时遇到了困难。
"这是我的班级“
class Patient{
private var id: Int
private var name: String
private var gender: String
private var mileage: Double
//global variable
var globalPatientID:Int{
return id
}
var globalPatientName:String{
return name
}
var globalPatientGender:String{
return gender
}
var globalPatientMileAge:Double{
return mileage
}
init(id:Int, name:String, gender:String, mileage:Double){
self.id = id
self.name = name
self.gender = gender
self.mileage = mileage
}
}
这是我的数组
let AppUserID = prefs.objectForKey("AppUserID")
for var i=0; i<nou; ++i{
numberOfUsersExisting = nou
if (AppUserID as? String == json[0][i]["App_ID"].stringValue){
print("Assigning AppUserID")
appUserMileage = json[0][i]["Mileage"].doubleValue
}
pSample += [Patient(id: json[0][i]["ID"].intValue, name: json[0][i]["Name"].stringValue, gender: json[0][i]["Gender"].stringValue, mileage: json[0][i]["Mileage"].doubleValue)]
pSample.sortInPlace({$0.globalPatientMileAge < $1.globalPatientMileAge})
}
所以pSample最初是一个空数组,它通过一个循环追加了一个项目类。
sortInPlace函数帮助我根据globalPatientMilaAge对pSample进行排序。
这让我开始思考,如何从class的数组中获取AppUserID的索引(我将其转换为String)?
我试着使用这个函数,但是它似乎不起作用,因为我在类中循环,而不是在类中循环。
appUserRanking = pSample.indexOf("\(AppUserID)")
3条答案
按热度按时间ecbunoof1#
indexOf
的主体可以是闭包,如map
和filter
函数PS:在repeat循环中从json(
json[0][i]
)获取一个对象6次是相当低效的。将对象分配给变量
并以它为例
uujelgoq2#
这样做,
dly7yett3#
在Swift 3及更高版本中,Map的工作方式如下