我的[String: NSNumber]
课程中有Card
的词典data
(原作!)。我的文档中有一个名为[Card]
的{{1}}数组。我deck
绑定了deck
,它显示了所有内容。
现在我正在尝试编写NSTableView
委托方法:
setObjectValue
这不起作用,因为dict中的值是func tableView(tableView: NSTableView, setObjectValue anObject: AnyObject?, forTableColumn tableColumn: NSTableColumn?, row rowIndex: Int) {
print("set got called on row " + String(rowIndex) + " and column " + tableColumn!.identifier + " with " + String(anObject))
guard var d = deck?.geometryCards[rowIndex].data else { return }
guard let i = tableColumn?.identifier where i.length > 0 else { return }
let key = i.substring(0, length:(i.length - "Column".length))
d[key] = anObject
}
,但从表中返回的值是NSNumber
。现在通常在Swift中遇到铸造问题时,每次都会有效:
AnyObject
但这不起作用,因为你需要to specify the type,在这种情况下我不知道它是什么 - 它可能是Int或Double。这里的诀窍是什么?
答案 0 :(得分:2)
如果您知道anObject
是Int
或Double
,那么它必须已经是NSNumber
,因为这是存储{{}的唯一方式1}}和Int
作为Double
(因为它们不是对象):
投射它的安全方法是使用条件转换 AnyObject
和可选绑定:
as?