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

Arrays 如何检查数组中的无条目和伴随数组中的条目?,arrays,swift,swift-optionals,Arrays,Swift,Swift Optionals,我正在将一个用Objective-C编写的纸牌游戏转移到Swift。我的手牌课有两个阵列,大小都是3,一个放着3张并排向下的牌,另一个放着在向下的牌上面的向上的牌。可以玩向上的牌和未覆盖的向下的牌,因此阵列可能持有一些牌,并且有一些元素为零,因为阵列单元正在处理牌的实际位置。这些被宣布为 var downCards: [Card] = [] var upCards: [Card] = [] downCards.reserveCapacity(3) upCards.

我正在将一个用Objective-C编写的纸牌游戏转移到Swift。我的手牌课有两个阵列,大小都是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的新手,不知道如何以不同的方式声明数组,也不知道如何使用optionals和unpackaging来检查丢失的卡(换句话说,nil)。

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

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

这很有效。我试过var downCards:[卡片]?,当然不行。谢谢你的快速回答!在Swift中,变量不能包含nil,除非其类型是可选的。数组中的元素也是如此。将可选项视为一个框。该框可以为空,也可以包含对象。可以让数组包含选项。您必须先打开该框(打开可选项),然后才能查看其内容。您可能需要制作一个
结构CardSlot{let top:Card?;let bottom:Card?}
,然后只需制作一个包含3个非可选
CardSlot
元素的数组。您好,欢迎使用。我建议清理项目的描述,转而关注代码、不起作用的内容等。在适当的情况下,为变量使用虚拟名称,使问题更加中性。此外,我建议您详细说明您的问题,以期望得到一个单一的答案。有多种方法可以避免该错误,一些用户可能会将此视为“为我解决此问题”,而不是请求真正的洞察力。