我必须创建一个可选Bool
类型的2D数组
并比较其中的值,但我不能。我第一次尝试以这种方式声明:
var Answ = [[Bool?]] ()
var Page = 0
for i in 0...4
{
if Answ[Page][i] == true
{...}
else if Answ[Page][I] == false
{...}
else
{...}
}
...
但是当我启动程序时,它说:
索引超出范围
当Xcode将Answ[Page][i]
与值进行比较时,为true
。
因此,我尝试修改代码,并以这种方式声明数组:
var Answ = Array (repeating: Array (repeating: Bool?.self , count: 5), count: 40)
var Page = 0
for i in 0...4
{
if Answ[Page][i] == true
{...}
else if Answ[Page][I] == false
{...}
else
{...}
}
...
但在同一点上,(如果answ[Page][i]==true)
抛出此错误:
二元运算符“==”不能应用于类型为“Bool?”的操作数。类型“(又名”可选。类型')和'布尔'”
此外,在代码的其他地方,我试图将数组的值设置为true/false(Answ[Page][2]=true
),Xcode说:
无法将类型“Bool”的值分配给类型“Bool?”。类型'(又名'可选。类型')
有人可以帮我吗?提前感谢您。
我发现了这个主题:
检查可选布尔值的值
但这对我没有多大帮助。
您的代码有几个问题。首先,不要在for循环中使用手动索引,而是使用for... in
自动为您处理索引。其次,处理可选布尔值的更好解决方案是使用可选绑定安全地展开值,然后检查非可选值。如果bool==true,您也不需要编写,如果bool
具有相同的含义,则无需编写。
另外,请确保您符合Swift命名约定,即变量名的小写字母。
var answ = [[Bool?]] ()
var page = 0
for ans in answ[page]{
if let unwrappedAns = ans {
if unwrappedAns {
// answ[page][i] = true
} else {
}
} else {
//answ[page][i] = ans is nil
}
}
如果您真的想循环访问整个数组数组,这是一种安全的方法:
for page in answ {
for ans in page {
//here ans = Answ[Page][i] when compared to the code in your question
if let unwrappedAns = ans {
if unwrappedAns {
} else {
}
} else {
//ans is nil
}
}
}
您应该使用< code >提供回退值。?。
顺便说一句,您不需要编写==false
或==true
,这是多余的。
if Answ[Page][i] ?? false {
[...]
}
您可以比较可选的布尔值,如Q中的
var Answ = Array (repeating: Array (repeating: Bool?.self , count: 5), count: 40)
创建一个< code>Bool?。self,它是可选bool的类型,而不是该类型的值。
你想要的是一个(嵌套的)Bool?
值数组,初始化为nil
:
var answers: [[Bool?]] = Array(repeating: Array(repeating: nil , count: 5), count: 40)
或替代:
var answers = Array(repeating: Array(repeating: Bool?.none , count: 5), count: 40)
我有一个布尔方法正在对字符串进行一些错误检查。我有一个int类常量叫“numwords”=8。我将一个字符串传递给布尔方法,在该方法中,我使用.split和.length对字符串进行单词计数。一个名为“words”的int计算字符串中的单词数。完成之后,我要执行一个if语句,比较单词和数字单词。如果它们的数目相等,则返回true,否则为false。我试过==和.等于,但都没用。有什么想法吗? 我试
为什么与有不同的 ? 我正在使用Drools DSL,我必须实现一个规则: 我有这些DSL定义: 要求是以肯定的方式编写可重用的DSL语句,并具有否定它们的能力。
我有一个客户对象类,它有一些变量,并且已经实现了一个关于其中一个变量的比较器。然而,我需要为不同的变量last_name实现另一个比较器。 因为我的Customer类中不能有2个compareTo()方法,所以我决定在这里专门创建一个Comparing类 但一旦触及Collections.sort(客户); 它不会激活下面的公共int比较(Customer Customer_1,Customerc
问题内容: 以这个为例(摘自Java regexchecker不起作用): 是否用于检查的值是否重要? 我知道有这是颇为相似。但是,很明显,这个问题只针对原始对象,而不是对象包装器;因此,将不适用。 另外,应该以不同于其他的方式对待? 问题答案: 从您的评论看来,您正在寻找使用包装器类的“最佳实践” 。但是实际上 并没有 最佳实践,因为使用此类开始是一个坏主意。使用对象包装的唯一原因是在您绝对 必
我试图从SharedPreferences中获取布尔值,这是真的,但每次都会得到一个假值。名为“MyPref”的SharedPreferences文件包含以下代码: 我正在为MyActivity中的SharedPreferences添加值。使用以下代码初始化: 并通过以下方式在多个类上检索它: 我总是得到Premium的值为false,发生这种情况的原因是什么,如何解决?我使用的是android
照例,每个类型的值都有一个相应类型的变量。C++中的布尔类型叫做bool。布尔变量的使用和其他类型类似,如: bool fred; fred = true; bool testResult = false; 第一行是一个简单的变量声明;第二行是个赋值;第三行是声明和赋值的组合,叫做初始化。 前面提到过,比较操作符的结果是布尔值,所以可以将结果保存在布尔变量中,如: bool evenFlag =