2017-02-20 41 views
-1
var dist: Dictionary<String, NSObject>! 
var bigDist : Dictionary<String, Dictionary<String, NSObject>>! 

self.bigDist["1" as String] = self.dist 

SWIFT 3.0给予零,我得到一个错误:词典<字符串,字典>的时候试过当我尝试这样做是为了增加一个字典

fatal error: unexpectedly found nil while unwrapping an Optional value 

数据集为self.dist

Optional(["hits": 0, "name": India lags behind China in consumer spends: Stefano Ricci’s Jackie Manglani, "web": Livemint, "id": -1655, "like": 0, "iurl": http://www.livemint.com/rf/Image-222x148/LiveMint/Period2/2017/02/21/Photos/Processed/[email protected], "notify": 0, "date": 201655200217, "active": 1, "type": Mark, "dateAdded": 20/02/2017, "url": http://www.livemint.com/Consumer/3NT8Vbw7BcGeoPJNMoyK5H/India-lags-behind-China-in-consumer-spends-Stefano-Riccis.html]) 
+0

嗯,是的,因为'bigDist'是'nil'。你需要初始化它(它几乎肯定是非可选的)。 – Hamish

回答

0

您的变量bigDist是隐含展开可选。 (你声明)your_type!

这意味着:

  1. 它可以包含一个零。
  2. 你不需要使用?!解开它。
  3. 如果你引用它,它包含零,你会崩溃。

3号是发生了什么事。

您需要创建一个空的字典。尝试在声明中摆脱!,并创建一个空的字典,当你把它声明:

var bigDist : Dictionary<String, Dictionary<String, NSObject>> = [:] 
0

你没有初始化bigDist

var dist: Dictionary<String, NSObject>? = nil 
var bigDist = Dictionary<String, Dictionary<String, NSObject>>() 

self.bigDist["1"] = self.dist 

的代码可以反正swiftier。使用[String: NSObject]而不是Dictionary<String, NSObject>(这完全相同)使代码更易于阅读,并且可以像您一样防止出现这样的错误。

var dist: [String: NSObject]? = nil 
var bigDist = [String: [String: NSObject]]() 

self.bigDist["1"] = self.dist 
+0

谢谢!那帮助了我 –

相关问题