我试着从web请求数据,然后得到一个四次的数组(它们是不同的),我试着把这四个数组放在一个大数组中。
问题是四个小数组不在大数组中的正确位置。我想用这个函数largeArray.sort把四个小的放在正确的位置。
这是我的代码:
for i in 0..<4{
Alamofire.request(homeUrl[i], method: .get, parameters: nil, encoding: JSONEncoding.default).responseJSON { (valueGot) in
switch valueGot.result.isSuccess{
case true:
let dataDict = valueGot.result.value as! NSDictionary
let interestDict = dataDict["interest"] as! NSDictionary
let issuesArray = interestDict["issues"] as! NSArray
let todayDict = issuesArray[0] as! NSDictionary
let articlesArray = todayDict["articles"] as! NSArray
self.nsmArray.removeAllObjects()
for oneDict in articlesArray{
let model:ArticleModel = Mapper<ArticleModel>().map(JSON: oneDict as! [String:Any])!
if model.cover != nil{
self.nsmArray.add(model)
}
}
self.nsmArray.add(i)
self.collectionNSMArray.add(self.nsmArray.mutableCopy()
self.allCollectionView?.reloadData()
case false:
print(valueGot.error ?? "404")
}
}
} //for循环结束
错误如下:
collectionNSMArray.sort { (s1:NSMutableArray, s2:NSMutableArray) -> Bool in
return s1.lastObject < s2.lastObject
}
这是我做的模型:
class ArticleModel: Mappable {
var title:String?
var snippet:String?
var cover:String?
var tags:[TagsType]?
var webUrl:String?
var appName:String?
var appIcon:String?
required init?(map: Map) {
mapping(map: map)
}
func mapping(map: Map) {
title <- map["title"]
snippet <- map["snippet"]
cover <- map["cover"]
tags <- map["tags"]
webUrl <- map["webUrl"]
appName <- map["appName"]
appIcon <- map["appIcon"]
}
}
class TagsType: Mappable {
var name:String?
required init?(map: Map) {
mapping(map: map)
}
func mapping(map: Map) {
name <- map["name"]
}
}
最佳答案
您得到的是错误,Binary operator '<' cannot be applied to two 'Any?' operands
是因为您试图比较两个<
不知道如何比较的值。<
是二进制运算符Any?
是要比较的对象的类型
您可以考虑将s1.lastObject
和s2.lastObject
转换为数字之类的内容,以便对它们进行比较。