如何检查无条目的数组和条目的伴随数组?

问题描述

我正在将用Objective-C编写的纸牌游戏移到Swift。在我的手牌类中,我有2个数组,大小均为3,一个数组容纳3张并排的羽绒卡,另一个数组容纳羽绒卡顶部的插卡。可以玩上牌和未下牌的纸牌,因此阵列可以容纳一些纸牌,而某些元素为零,因为阵列单元正在处理纸牌的实际位置。这些被声明为

    var downCards: [Card] = []
    var upCards: [Card] = []
    downCards.reserveCapacity(3)
    upCards.reserveCapacity(3)

在目标C中,以下代码可以告诉我是否有未发现的失灵卡,效果很好:

    if ((handOfCurrentPlayer.upCards[cardLeft] == nil) &&
        (handOfCurrentPlayer.downCards[cardLeft] != nil)) {}

但是在Swift中,我得到“将'Card'类型的非可选值与'nil'进行比较,总是返回false”

我对Swift还是很陌生,无法弄清楚如何以不同的方式声明数组,或者使用可选的选项和解包功能来检查是否缺少卡片(换句话说,无)。

解决方法

如果数组可以包含nil个元素,则必须使用可选类型声明数组

var downCards: [Card?] = []
var upCards: [Card?] = []

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...