我尝试从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"]
}
}
答案 0 :(得分:1)
您收到错误Binary operator '<' cannot be applied to two 'Any?' operands
,因为您正在尝试比较<
不知道如何比较的两个值。
<
是二元运算符Any?
是您要比较的对象的类型您可以考虑将s1.lastObject
和s2.lastObject
投射到某个数字上,以便对其进行比较。