gpt4 book ai didi

ios - 如果找不到结果,对象过滤器会崩溃

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

我已经编写了一些代码来从自定义对象数组中查找用户的收藏夹。除非该对象不存在,否则它绝对可以正常工作,在这种情况下它只会崩溃。我正在考虑以不同的方式完全重写代码,但我想可能有一种方法可以修复它……我只是不知道如何解决。

这是我的代码:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("rideCell", forIndexPath: indexPath) as! RideCell

var ride = DataManager.sharedInstance.getRideByName(favouritesArray[indexPath.row] as! String)

if ride != nil {
cell.rideNameLabel.text = ride!.name

var dateFormat = NSDateFormatter()
dateFormat.dateFormat = "h:mm a"
cell.updatedLabel.text = dateFormat.stringFromDate(ride!.updated!)

if ride!.waitTime! == "Closed" {
cell.waitTimeLabel.text = ride!.waitTime!
} else {
cell.waitTimeLabel.text = "\(ride!.waitTime!)m"
}
}

return cell
}

func getRideByName(name: String) -> Ride? {
let result = self.rideArray.filter({
$0.name == name
})
return result[0]
}

就像我说的,如果可以找到 favouritesArray 中的字符串,它就可以正常工作,但如果找不到,它就会崩溃。

谁能建议我可以做哪些更改来阻止崩溃,并让它返回 nil?

谢谢!

最佳答案

您可以在过滤后的数组上使用 first 属性:

return result.first

它返回一个可选的。不过,更好的选择是使用 indexOf() 函数(如果您使用的是 Swift 2),因为它不会构建整个数组,并且会停止查看 rideArray 的其余部分一旦找到您要查找的内容:

return self.rideArray.indexOf { $0.name == name }.map { self.rideArray[$0] }

关于ios - 如果找不到结果,对象过滤器会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31440818/

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