作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的目标是拥有一个包含(除其他外)数组的字典,并能够获取该数组的值。
var total: Int = 0;
let dice:[NSTextField:NSArray] = [
d4Amount:[d4OE, 4],
d6Amount:[d6OE, 6],
];
for (die, dieArray) in dice
{
let button:NSButton = dieArray[0] as! NSButton;
let num:Int = dieArray[1] as! Int;
total += DoRoll(die, oe: button, max: num);
}
在上面的“let button:NSButton = dieArray[0]...”行中,出现错误 Thread 1: signal SIGABRT 并且程序失败。首先我只有一行:
total += DoRoll(die, oe: dieArray[0] as! NS Button, max: dieArray[1] as! Int);
这两者都不起作用(很明显),但是当我这样做时,它起作用了......
total += DoRoll(d4Amount, oe: d4OE, max: 4);
它工作得很好。
有什么想法吗?
函数 DoRoll 看起来像这样(应该不相关):
private func DoRoll(amount: NSTextField, oe: NSButton, max: Int) -> Int
{
let nrRolls: Int! = Int(amount.stringValue);
var total: Int = 0;
if(nrRolls != nil && nrRolls != 0)
{
OutputText.string = OutputText.string! + "Now rolling d" + String(max) + ": ";
for(var i: Int = 0; i < nrRolls; i++)
{
var randomNr: Int, specialMax: Int;
var textStr: String = "";
specialMax = max;
if(max >= 100)
{
if(max > 100)
{
specialMax = 995;
}
else if(max > 99)
{
specialMax = 95;
}
else
{
specialMax = max - 1;
}
}
repeat
{
randomNr = Int(arc4random_uniform(UInt32(max))) + 1;
total += randomNr;
if(textStr != "") { textStr = textStr + "+"; }
textStr = textStr + String(randomNr);
} while(oe.state == NSOnState && randomNr >= specialMax)
OutputText.string = OutputText.string! + textStr + " ";
}
OutputText.string = OutputText.string! + "\n";
}
return total;
}
最佳答案
我现在知道我做错了什么了。
这根本不是上面代码中的错误,而是项目中项目的命名错误。我在 View 中的同一个项目中有几个不同的 D4Amount,这就是它崩溃的原因。
抱歉打扰您。
关于arrays - 从 Swift 字典中的数组获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35417591/
我是一名优秀的程序员,十分优秀!