gpt4 book ai didi

ios - 如何创建和排序浮点字典数组

转载 作者:行者123 更新时间:2023-11-28 11:43:59 26 4
gpt4 key购买 nike

我有一个自定义对象,其中包含一些 float 属性(以及其他字符串、日期等)。丢弃非 float 属性,我想过滤掉非零属性,按大小排序并显示它们。然而,作为一个敏捷的新手,我遇到了麻烦。

我的对象看起来像这样:

@objc public class MyTone: NSObject {
var title: String = ""
var date: Date = Date()
var val1: Float = 0
var val2: Float = 0
var val3: Float = 0
//...
var val10: Float = 0;
}

到目前为止,根据我在 Google 上找到的内容,我的代码是:

let propArray: [[String: AnyObject]] = [
["prop": "val1" as AnyObject,
"value": 0.3 as AnyObject],
["prop": "val2" as AnyObject,
"value": 0.2 as AnyObject],
["prop": "val3" as AnyObject,
"value": 0.4 as AnyObject]
]

let sortedArray = propArray.sort { (first, second,third) in
return first["value"]?.floatValue < second["value"]?.floatValue< third["value"]?.floatValue
}

Fixit 要求我插入 anyObject 代码,但我收到错误“Any Object is Not Subtype of NSNumber”。另外,我不太明白first、second等等是什么意思……编译器能理解这些术语吗?似乎有更好的方法可以做到这一点。

提前感谢您的任何建议。

最佳答案

您必须使用集合方法 sorted 因为您不能对不可变值使用可变成员。

其次,排序函数 cloure 没有第三个参数 (first, second)。见文件 here

第三,对于 first["value"]?.floatValue,您必须提供默认值,例如“0”,因为它是可选的。

let sortedArray = propArray.sorted { (first, second) -> Bool in
return first["value"]?.floatValue ?? 0 < second["value"]?.floatValue ?? 0
}

关于ios - 如何创建和排序浮点字典数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52838021/

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