Swift Array'Object'没有名为subscript的成员

时间:2015-06-27 02:43:10

标签: ios arrays swift object multidimensional-array

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

  1. 迷宫(2d阵列)
  2. 在viewcontroller上我有var mazeGame:Maze = Maze()

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

    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
        }
    }
    

1 个答案:

答案 0 :(得分: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