gpt4 book ai didi

swift - 字典 updateValue 导致 swift 编译器段错误

转载 作者:行者123 更新时间:2023-11-28 09:20:59 25 4
gpt4 key购买 nike

我的类(class)有一个属性

var activeSquares = Dictionary <String, SKShapeNode> ()

我尝试在字典中使用添加和更新值

let squareNode = SKShapeNode(rectOfSize: CGSizeMake(80, 80), cornerRadius: 8)
activeSquares.updateValue(squareNode, forKey: "someUniqueDescription")

如果我使用,我也会遇到同样的崩溃

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

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

最佳答案

不确定我的解决方案是否适合这里,但它可能会有所帮助。订阅 NSDictionary 似乎有些奇怪。不知道为什么,但它被定义为:

func objectForKeyedSubscript(key: NSCopying!) -> AnyObject!

所以,如果我没记错的话,它会返回隐式展开的可选值,但应该返回可选值,因为键可能没有值。如果你尝试写:

if(dictionary["key"] != nil)

如果您这样写:

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

和:

var someArray : NSArray? = dictionary["key"]? as? NSArray // note ? after []

我想可能有一些带有可选值和通过下标设置对象的东西,它被定义为:

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

也许使用可选的解包也能有所帮助。

关于swift - 字典 updateValue 导致 swift 编译器段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24616587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com