【发布时间】:2016-11-30 12:25:49
【问题描述】:
quickFilterDictionary 在self.preferencesListFilterDictionary 中的第二个对象是nil。如何在Dictionary中添加[NSIndexPath]索引路径(作为键)和NSNumber(作为值)?
注意:当我在控制台打印self.preferencesListFilterDictionary时,第一个对象添加成功,只有第二个对象是nil。请问,我在下面的代码中做错了什么?
self.preferencesListFilterDictionary["price"] = 1000
self.quickFilterArr = [localizedStrOf("deliveryNowOnly"),localizedStrOf("rated")]
var quickFilterDictionary = Dictionary<NSIndexPath, NSNumber?>()
for obj in self.quickFilterArr {
let row = self.quickFilterArr.indexOf(obj)
let indexPath = NSIndexPath(forRow:row!, inSection: 0)
quickFilterDictionary[indexPath] = NSNumber(bool: false)
}
print(quickFilterArr.count)
print(quickFilterDictionary)
self.preferencesListFilterDictionary.updateValue(quickFilterDictionary as? AnyObject, forKey: "quickFilterDictionaryKey")
print(self.preferencesListFilterDictionary)
控制台打印:
▿ [1] : 2 elements
- .0 : "quickFilterDictionaryKey"
- .1 : nil
为了从数字中获取字典布尔值,我编写了以下代码 -
func getQuickFilterValueOfIndexpath(indexPath:NSIndexPath) -> Bool {
if let val = self.preferencesListFilterDictionary["quickFilterDictionaryKey"] {
// now val is not nil and the Optional has been unwrapped, so use it
let tempDict = val as! Dictionary<NSIndexPath, NSNumber?>
if let boolVal = tempDict[indexPath] {
return boolVal!
}
}
return false
}
【问题讨论】:
标签: swift dictionary boolean nsnumber nsindexpath