SwiftyJSON& Swift 3:无法转换类型' Int32的返回表达式?'返回类型> '诚信&#39?;

时间:2016-10-01 15:27:44

标签: cocoapods swift3 swifty-json

我们正在使用CocoaPods config pod 'SwiftyJSON', '3.1.0'升级到SwiftyJSON Swift 3。

我们收到此错误:

  

/Users/xxx/Documents/iOS/xxx/Pods/SwiftyJSON/Source/SwiftyJSON.swift:866:33:   无法转换类型' Int32的返回表达式?'返回类型   '诠释'?

错误发生在SwiftyJSON.swift中的return语句中:

public var int: Int? {
    get {
        return self.number?.int32Value
    }
    set {
        if let newValue = newValue {
            self.object = NSNumber(value: newValue)
        } else {
            self.object = NSNull()
        }
    }
}

任何人都知道这是什么问题?这是我们的CocoaPods配置还是使用SwiftyJSON的问题?

4 个答案:

答案 0 :(得分:8)

我只需用下面的代码替换一行代码。简单

public var int: Int? {
        get {
            return self.number?.intValue
        }
        set {
            if let newValue = newValue {
                self.object = NSNumber(value: newValue)
            } else {
                self.object = NSNull()
            }
        }
    }

答案 1 :(得分:4)

实现了SwiftyJSON的supported version是3.0.0而不是3.1.0。使用3.0.0,问题就消失了。

pod 'SwiftyJSON', '3.0.0'

答案 2 :(得分:0)

试试这个,

  

错误:返回self.number?.int32Value

     

好:返回self.number?.intValue

     

原因:它似乎在返回整数方面更为通用。

答案 3 :(得分:0)

我手动添加as? Int以使其再次运行:

public var int: Int? {
    get {
        return self.number?.int32Value as? Int
    }
    set {
        if let newValue = newValue {
            self.object = NSNumber(value: newValue)
        } else {
            self.object = NSNull()
        }
    }
}