在Swift中转换为NSNumber以进行NSTableView编辑

时间:2015-12-19 19:56:43

标签: swift nstableview

我的[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。这里的诀窍是什么?

1 个答案:

答案 0 :(得分:2)

如果您知道anObjectIntDouble,那么它必须已经是NSNumber,因为这是存储{{}的唯一方式1}}和Int作为Double(因为它们不是对象):

投射它的安全方法是使用条件转换 AnyObject可选绑定

as?