ios - Swift 按错误排序:无法转换“CGFloat”类型的值?到预期的参数类型'Self'
问题描述
这是自定义对象:
struct ScannedFacts {
var result = -1
var frame:CGRect? = nil
var name = ""
}
这是我想对以下类型的数组进行排序的函数:
func getSortedData(data:[(String, ScannedFacts)]) -> [(String, ScannedFacts)] {
return data.sorted(by: {$0.1.frame?.minX < $1.1.frame?.minX})
}
这是我得到的错误,我真的无法弄清楚:
Cannot convert value of type 'CGFloat?' to expected argument type 'Self'
我在这里错过了什么?
解决方案
您需要在比较值时使用CGFloat
而不是:CGFloat?
为了更容易,您可以使用计算属性:
struct ScannedFacts {
var frame:CGRect? = nil
var frameMinX: CGFloat {
// assume we treat `nil` the same way as `0`
frame?.minX ?? 0
}
}
return data.sorted { $0.1.frameMinX < $1.1.frameMinX }
推荐阅读
- java - 什么是类[] 类,请给我一些例子
- c# - 如何在 DropDownList 中将 system.web.mvc.mvchtmlstring 转换为 System.IConvertible?
- java - 如何导出 lwjgl3 应用程序
- amazon-web-services - ssh 隧道脚本在 beanstalk 部署中永远挂起
- node.js - 使用繁琐的数据库连接
- swift - 如何从更多 tabBarController 到子 viewController?
- php - 网页(用于搜索项目)在数据库中具有项目的默认结果
- python - 如何通过交互包装函数修改matplotlib fig、ax 对象?
- build - 如何从源代码在 Windows 10 中构建 flann?
- rest - Powershell 正在吞噬 REST 错误响应