【问题标题】:Swift Array 'Object' does not have member named subscriptSwift Array 'Object' 没有名为下标的成员
【发布时间】:2015-06-27 02:43:10
【问题描述】:

所以我对编程很陌生,我有 2 个课程

  1. 房间
  2. 迷宫(二维数组)

在视图控制器上我有var mazeGame:Maze = Maze()

就在它上方的空白行我有一个错误“预期声明” 下面的代码是我要解决的主要错误“'Maze' 没有名为 subscript 的成员”

if (mazeGame[col][row].checkRoomNorthExit(row,col))

还有没有办法在 swift 中创建构造函数?就为了在我开始运行迷宫时可以自动调用一系列函数/方法来生成迷宫?

class Maze: NSObject {

    var mazeFloor = Array<Array<Room>>()

    var mazeSeed:UInt32 = 0
    var mazeSizeRows:UInt32 = 20
    var mazeSizeCol:UInt32 = 20
    var mazeRowPosition:UInt32 = 0
    var mazeColPosition:UInt32 = 0

    var startRow:Int = 0
    var startCol:Int = 0

    var endRow:Int = 0
    var endCol:Int = 0

    override init(){

    }

    func checkRoomNorthExit(rowPos: Int, colPos: Int) -> Bool{
        return mazeFloor[colPos][rowPos].getnorthExit()
    }
}

在 Room 类中

class Room: NSObject {

    //Used for the 4 sides of the room
    var northExit = false
    var westExit = false
    var eastExit = false
    var southExit = false    

    func getnorthExit() -> Bool {
        return northExit
    }
}

【问题讨论】:

  • 你能发布你对 Maze 类的定义吗?如果您发布整个代码,但不仅仅是其中的一行,这也会有所帮助。谢谢
  • 您需要将此代码移到您的原始帖子中。评论中的代码太多了,很难弄清楚那里实际发生了什么。
  • 我在帖子中添加了有关如何访问所需数组的更新。但我相信会有更多的错误需要解决。看起来这只是一个开始:)
  • 现在我只想专注于让它正常工作,我会继续更新以获取你们需要帮助的任何其他内容:)

标签: ios arrays swift object multidimensional-array


【解决方案1】:

显然 mazeGame 有一个类型 Maze 没有实现下标,因此您不能像在 if 中那样通过方括号访问它。

您应该按以下方式访问房间:

if (mazeGame.checkRoomNorthExit(row,col))

至于构造函数,你需要为你的类定义 init 方法。查看 Swift 书中对初始化的解释——https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html

【讨论】:

  • 当我尝试访问房间时,我收到一条错误消息“找不到成员 'checkRoomNorthExit'”
  • 这意味着您没有在 Room 类中定义方法 checkRoomNorthExit。 mazeFloor 最后返回 Room,而不是 Maze。如果是这样,预期的逻辑是什么?从代码中很难猜出来。
  • 我对您尝试实现的逻辑进行了另一次猜测,进行了另一次编辑 :) 但我需要您就您尝试使用代码实现的目标提出建议。
  • 我正在尝试创建的是一个使用视图控制器的 2d 迷宫游戏(尝试使用一个视图来完成它(使用它作为 main.cpp 文件,就像在 C++ 中一样))我是尝试使用此方法检查是否使用 .hidden 激活和停用视图上的按钮。所以我使用这个视图来跟踪用户/玩家在迷宫中的位置,并显示每个房间中可用的选项。
  • 也只是好奇我是否按照您现在的方式进行操作,它如何知道我试图访问二维数组中的哪个房间?
猜你喜欢
  • 2014-12-17
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多