【问题标题】:Error in adding an element to [String:Array<NSDictionary>] in Swift在 Swift 中向 [String:Array<NSDictionary>] 添加元素时出错
【发布时间】:2015-03-08 20:12:53
【问题描述】:

我的model 中有一个属性类型为:[String:Array&lt;NSDictionary&gt;]。 我想循环添加元素。所以这就是我所做的:

 for var k=0;k<body.count;k++ {
   var dict=body[k] as NSDictionary
   if(k==0) {
      self.model.data[i]!=[dict]
   }
   else {
      self.model.data[i]!.append(dict)
   }
}

当我这样做时,我收到以下错误:

致命错误:在展开可选值时意外发现 nil

构造函数将model.data初始化为data=[String:Array&lt;NSDictionary&gt;]()

请帮忙。提前致谢。

【问题讨论】:

  • i 在上面的代码中声明。它的类型为String。那不是nil。我检查了调试器。

标签: ios arrays swift nsdictionary


【解决方案1】:

问题可能是当您将[dict] 分配给它时,您正在解包self.model.data[i]。我假设您在 data[i] 还没有价值的情况下这样做。所以强制解包会产生一个 nil 指针,从而导致崩溃。

试试这个:

for var k=0;k<body.count;k++ {
   var dict=body[k] as NSDictionary
   if(k==0) {
      self.model.data[i]=[dict]
   }
   else {
      self.model.data[i]!.append(dict)
   }
}

虽然这假设self.model.data[i] 存在于k 不等于0 的情况下。我不确定这是否正确,您没有提供足够的详细信息。

认为你正在尝试做的是:

for var k = 0; k < body.count; k++ {
   var dict = body[k] as NSDictionary
   if self.model.data[i] == nil {
        self.model.data[i] = []
   }
   self.model.data[i]!.append(dict)
}

【讨论】:

  • 谢谢伙计!你是救生员!
  • 是的,我知道。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
相关资源
最近更新 更多