2016-09-28 38 views
8

我在尝试将以下代码从此库(https://github.com/dankogai/swift-json)转换为Swift 3兼容代码。Swift 2 to 3迁移jsonObject产生'Any'而不是期望的上下文结果类型'AnyObject?'

虽然我被卡在这一行上。

obj = try JSONSerialization.jsonObject(

我得到的错误是把JSONObject产生“任何”,而不是预期的情境结果类型“AnyObject?

我试图在其完整上下文中转换为swift 3之前的代码如下。

public convenience init(data:NSData) { 
     var err:NSError? 
     var obj:AnyObject? 
     do { 
      obj = try NSJSONSerialization.JSONObjectWithData(
       data, options:[]) 
     } catch let error as NSError { 
      err = error 
      obj = nil 
     } 
     self.init(err != nil ? err! : obj!) 
    } 

回答

13

在夫特3 id类型现在导入为Any而非AnyObject。您可以将obj的类型更改为Any或将其更改为AnyObject

+0

你能给我举个例子吗?我有点生疏与铸造在斯威夫特 –

+0

你应该能够做到这一点:'obj =尝试NSJSONSerialization.JSONObjectWithData( 数据,选项:[])作为AnyObject' – rhyshort

+0

我改变了obj:任何?像你所建议的那样,想我终于明白了。然后,我在self.init上发现一个错误,它表示'?'中的Result值:表达式的类型不匹配'JSON.NSError(又名'NSError')和'Any'。没有双关语意,但......任何想法? –

相关问题