【问题标题】:Cannot convert type Any? To type AnyObject? When converting to swift 4 from swift 3无法转换任何类型?要键入 AnyObject?从 swift 3 转换为 swift 4 时
【发布时间】:2019-04-26 09:44:32
【问题描述】:

试图让我的代码从 swift 3 编译到 swift 4。

我正在使用 ObjectMapper:ObjectMapper FROM Github

我收到以下 2 条错误消息

在强制错误中无法将类型“Any?”的值转换为类型“AnyObject?” 可选链没有效果,表达式已经产生'Any?'

let likesRequest = FBSDKGraphRequest(graphPath: "/me/likes", parameters: ["fields": "id, name, picture, user_likes", "after": after!])
let _ = likesRequest?.start() { (connection : FBSDKGraphRequestConnection?, result2 : Any?, error : Error?) -> Void in
let facebookLikes = Mapper<FacebookLikesListObject>().map(JSON: result2 as AnyObject?)

FacebookLikesListObject.swift

import UIKit

class FacebookLikesListObject: Mappable {
    var likes : [FacebookLikeObject]?
    var after : String?
    var before : String?

    required init?(map: Map) {

    }

    func mapping(map: Map) {
        likes <- map["data"]
        after <- map["paging.cursors.after"]
        before <- map["paging.cursors.before"]
    }
}```

【问题讨论】:

    标签: ios swift xcode facebook-graph-api


    【解决方案1】:

    Any 用于结构和/或类 而AnyObject 仅用于类。

    您可以安全地从AnyObject 向上转换为Any,但不能反其道而行之。

    因此,您可以尝试安全地投射到 AnyObject

       if let downCastedResult2 = result2 as? AnyObject{
          let facebooklikes = Mapper.map(JSON: downcastedResult2)
       }else{
         //fallback
       }
    

    你可以强制施法

        let facebookLikes = Mapper<FacebookLikesListObject>().map(JSON: result2 as! AnyObject)
    

    【讨论】:

      【解决方案2】:

      你可以使用下面的代码。

      guard let objects = result2 as? AnyObject else { return }
      let facebookLikes = Mapper<FacebookLikesListObject>().map(JSON: objects)
      

      【讨论】:

      • 这行得通。非常感谢。守卫让对象=结果2作为? AnyObject else { return } let facebookLikes = Mapper().map(JSON: objects as! [String : Any])
      • 如果有帮助,请接受我的回答,以便其他人在同一问题中获得优势
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      相关资源
      最近更新 更多