二元运算符'<'不可能是。适用于两个'任何?'操作数

时间:2017-08-30 14:46:03

标签: ios arrays swift

我尝试从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
}

enter image description here

这是我做的模型:

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"]
    }
}

1 个答案:

答案 0 :(得分:1)

您收到错误Binary operator '<' cannot be applied to two 'Any?' operands,因为您正在尝试比较<不知道如何比较的两个值。

  • <是二元运算符
  • Any?是您要比较的对象的类型

您可以考虑将s1.lastObjects2.lastObject投射到某个数字上,以便对其进行比较。