有关Xcode 7中Swift 2.1的问题

我已经声明了这样的可选变量:

var something: Int64?

我想稍后使用速记将其分配给字典键,例如:
dictionary['something'] = (something != nil) ? something! : nil

XCode给我以下验证错误:



这是什么问题?为什么可选的Int64不能为nil?

最佳答案

这里有很多问题。首先,Int64不是AnyObject。所有原始数字类型都不是类。可以使用AnyObject将它们桥接到NSNumber,但是您不会自动为Int64桥接(请参阅MartinR的评论。我最初说这是因为它包装在Optional中,但是实际上是因为它是固定宽度的)。

接下来,此语法:

(something != nil) ? something! : nil

只是说something的一种非常复杂的方法。

所需的工具是map,以便您可以选择并将其转换为NSNumber(如果存在)。
dictionary["something"] = something.map(NSNumber.init)

当然,如果可能的话,请摆脱AnyObject。这种类型的痛苦是巨大的,并且会引起很多问题。如果这是一个[String: Int64],则可以:
dictionary["something"] = something

关于ios - 尝试将可选的Int64分配给字典键时,类型 'Int64'和 '_'不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34902554/

10-12 14:43
查看更多