2016-09-28 47 views
8

Aşağıdaki kodu bu kitaplıktan (https://github.com/dankogai/swift-json) Swift 3 Uyumlu koduna dönüştürmeyi deniyorum.Swift 2 - 3 Geçiş jsonObject, beklenen herhangi bir bağlamsal sonuç türünü 'AnyObject?' Değil 'Any' üretir

Bu hatta takılıyorum.

obj = try JSONSerialization.jsonObject(

alıyorum hata JSONObject nesnesi 'Herhangi' değil, beklenen bağlamsal sonuç türünü üreten bir 'AnyObject?'

Tam bağlamında hızlı 3'e dönüştürmeyi denemeden önce kod aşağıdadır.

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!) 
    } 

cevap

13

Swift 3, id türleri artık Any yerine AnyObject olarak alınır. obj türünü Any olarak değiştirebilir veya AnyObject'a gönderebilirsiniz.

+0

Bana neye benzeyeceğine dair bir örnek verebilir misiniz? Ben Swift –

+0

içinde döküm ile biraz paslıyım Sadece bunu yapabilmeniz gerekir: 'obj = NSJSONSerialization.JSONObjectWithData ( veri, seçenekler: []) AnyObject' olarak deneyin – rhyshort

+0

obj değiştirildi: Any? önerdiğin gibi, sonunda anladığımı düşünüyorum. Daha sonra, '?': Sonuç ifadesinin 'JSON.NSError (aka' NSError ') ve' Any 'türlerinin eşleşmediğini belirten self.init üzerinde bir hata oluştu. Hiç amaçlanmadı ama ... herhangi bir fikir? –