Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字典更新值导致swift编译器分段错误_Swift_Xcode6 - Fatal编程技术网

字典更新值导致swift编译器分段错误

字典更新值导致swift编译器分段错误,swift,xcode6,Swift,Xcode6,我的类有一个属性 var activeSquares = Dictionary <String, SKShapeNode> () 如果我使用 activeSquares["someUniqueDescription"] = squareNode 但它在编译时会导致崩溃 1. While emitting IR SIL function @_TFC14gamename9GameScene11addedSquarefS0_FCS_6SquareT_ for 'addedSquare

我的类有一个属性

var activeSquares = Dictionary <String, SKShapeNode> ()
如果我使用

activeSquares["someUniqueDescription"] = squareNode
但它在编译时会导致崩溃

1.  While emitting IR SIL function @_TFC14gamename9GameScene11addedSquarefS0_FCS_6SquareT_ for 'addedSquare' at /.../gamename/gamename/GameScene.swift:30:5
<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)
Command /Applications/Xcode6-Beta2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254
1。在/../gamename/gamename/GameScene.swift:30:5处为“addedSquare”发射IR SIL功能时
:0:错误:无法执行命令:分段错误:11
:0:错误:swift前端命令因信号而失败(使用-v查看调用)
命令/Applications/Xcode6-Beta2.app/Contents/Developer/Toolchains/xcodefault.xctoolchain/usr/bin/swift失败,退出代码254

如何正确使用updateValue向字典添加/更新键/值对?

不确定我的解决方案是否适合这里,但它可能会有所帮助。似乎订阅NSDictionary有点奇怪。不确定原因,但定义如下:

func objectForKeyedSubscript(key: NSCopying!) -> AnyObject!
    func setObject(obj: AnyObject!, forKeyedSubscript key: NSCopying!)
所以,如果我没记错的话,它会隐式地返回unwrapped optional,但应该返回optional,因为键可能没有值。如果你想写:

if(dictionary["key"] != nil)
如果编写以下代码,则会出现编译错误“AnyObject不能转换为UInt8”:

if(dictionary["key"])
你没有一个

我解决此问题的方法是使用可选的展开,因此:

if(someBool && dictionary["key"]) // fine in beta 2, crash in beta 3-4

// turned to:

var hasValueForKey = false
if dictionary["key"]
{
    hasValueForKey = true
}
if(someBool && hasValueForKey) // fine in beta 4
以及:

我想可能有一些选项和东西可以通过下标设置对象,它的定义如下:

func objectForKeyedSubscript(key: NSCopying!) -> AnyObject!
    func setObject(obj: AnyObject!, forKeyedSubscript key: NSCopying!)

也许在这里玩可选的解包也会有所帮助。

我要尝试的第一件事是更新到Xcode6 Beta 3(因为编译器不应该出错)