Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS Swift:按值对数组排序时,在何处将字符串转换为浮点_Ios_Arrays_Swift_Sorting_Swift3 - Fatal编程技术网

iOS Swift:按值对数组排序时,在何处将字符串转换为浮点

iOS Swift:按值对数组排序时,在何处将字符串转换为浮点,ios,arrays,swift,sorting,swift3,Ios,Arrays,Swift,Sorting,Swift3,在iOS Swift中,我按照以下代码按降序排列数组。代码运行良好,但是,“Price”不是一个双精度的,而是一个字符串(因此当前代码在使用多位数时会出现一些错误) 在这个单行排序函数中,如何将字符串“Price”转换为double OfferList.sort { $0.Price > $1.Price } 我知道在将排序写入多行循环时有一些方法可以实现,但是有没有一种方法可以直接在上面的行中实现呢?Double有一个初始值设定项,它可以采用StringProtocol,当然它会返回一

在iOS Swift中,我按照以下代码按降序排列数组。代码运行良好,但是,“Price”不是一个双精度的,而是一个字符串(因此当前代码在使用多位数时会出现一些错误)

在这个单行排序函数中,如何将字符串“Price”转换为double

OfferList.sort { $0.Price > $1.Price }

我知道在将排序写入多行循环时有一些方法可以实现,但是有没有一种方法可以直接在上面的行中实现呢?

Double
有一个初始值设定项,它可以采用
StringProtocol
,当然它会返回一个
可选的
,因为字符串可能是数字,也可能不是数字。为了将字符串排序为双倍,您需要一个备用选项以防失败,否则您需要强制展开这些
init
s,前提是您可以保证它们始终是双倍的。选项如下所示:

//Fallback using a nil-coalescing operator
OfferList.sort { (Double($0.Price) ?? 0) > (Double($1.Price) ?? 0) }

//Force unwrapping
OfferList.sort { Double($0.Price)! > Double($1.Price)! }

作为一个不相关的小例子,最好的做法是用驼峰式命名对象的变量和属性,比如
offerList
$0.price
。当然,这不是一个要求,但这正是其他Swift开发人员所期望的。

使用NSArray的排序方法从字典值转换和排序。使用下面的代码进行排序

let sortedResults: NSArray = arry.sorted { (obj1, obj2) -> Bool in
        if ((obj1 as! NSDictionary).allKeys as NSArray).contains("id") && ((obj2 as! NSDictionary).allKeys as NSArray).contains("id"){
            return Float((obj1 as! NSDictionary)["id"] as! String)! < Float((obj2 as! NSDictionary)["id"] as! String)!
        }
        else{
            return true
        }
        } as NSArray
let sortedResults:NSArray=arry.sorted{(obj1,obj2)->Bool-in
if((obj1作为!NSDictionary).allKeys作为NSArray.contains(“id”)&((obj2作为!NSDictionary.allKeys作为NSArray.contains(“id”){
返回浮点((obj1作为!NSDictionary)[“id”]as!String)!
非常感谢您。