找不到排序函数的重载 swift
Cannot find overload with sorted function swift
我正在尝试根据 listTitle
属性 对象的字母顺序对 List
对象数组进行排序。这是我的 List
对象:
class List : DBObject {
dynamic var listTitle : NSString!
dynamic var listDate : NSDate!
dynamic var ordered : NSNumber!
dynamic var qrCode : NSString!
dynamic var storeId : NSNumber!
}
这是我的排序函数:
func sortByName() {
var listArray = [List]()
for object in cardViewArray {
let card = object as CardView
listArray.append(card.list)
}
var sortedLists = [List]()
sortedLists = sorted(listArray) { [=12=].listTitle < .listTitle }
reloadView()
}
在 sortedLists
行我收到错误:
'Cannot find an overload for 'sorted' that accepts an argument list of
type '([(List)], (_, _) -> _)''.
我们将不胜感激。
NSString
没有开箱即用的 <
:
let s1: NSString = "foo"
let s2: NSString = "bar"
s1 < s2
// error: 'NSString' is not implicitly convertible to 'String'; did you mean to use 'as' to explicitly convert?
过去,隐式 NSString
到 String
的转换问题不大,但 1.2 解决了这个问题。
各种不同的方法来解决这个问题,但请尝试:
sorted(listArray) { ([=11=].listTitle as String) < (.listTitle as String) }
顺便说一下,数组有一个内置的 sorted
方法(它可能会执行得更好,因为它更了解它正在排序的内容):
let sortedLists = listArray.sorted { etc. }
此外,每当您发现自己创建了一个空数组,然后用另一个序列的每个元素的转换填充它时,这都是 map
:
的一个很好的候选者
let listArray = cardViewArray.map {
let card = [=13=] as CardView
return card.list
}
我正在尝试根据 listTitle
属性 对象的字母顺序对 List
对象数组进行排序。这是我的 List
对象:
class List : DBObject {
dynamic var listTitle : NSString!
dynamic var listDate : NSDate!
dynamic var ordered : NSNumber!
dynamic var qrCode : NSString!
dynamic var storeId : NSNumber!
}
这是我的排序函数:
func sortByName() {
var listArray = [List]()
for object in cardViewArray {
let card = object as CardView
listArray.append(card.list)
}
var sortedLists = [List]()
sortedLists = sorted(listArray) { [=12=].listTitle < .listTitle }
reloadView()
}
在 sortedLists
行我收到错误:
'Cannot find an overload for 'sorted' that accepts an argument list of type '([(List)], (_, _) -> _)''.
我们将不胜感激。
NSString
没有开箱即用的 <
:
let s1: NSString = "foo"
let s2: NSString = "bar"
s1 < s2
// error: 'NSString' is not implicitly convertible to 'String'; did you mean to use 'as' to explicitly convert?
过去,隐式 NSString
到 String
的转换问题不大,但 1.2 解决了这个问题。
各种不同的方法来解决这个问题,但请尝试:
sorted(listArray) { ([=11=].listTitle as String) < (.listTitle as String) }
顺便说一下,数组有一个内置的 sorted
方法(它可能会执行得更好,因为它更了解它正在排序的内容):
let sortedLists = listArray.sorted { etc. }
此外,每当您发现自己创建了一个空数组,然后用另一个序列的每个元素的转换填充它时,这都是 map
:
let listArray = cardViewArray.map {
let card = [=13=] as CardView
return card.list
}