2015-06-27 3 views
-2

Так что я довольно новыми для программирования и у меня есть 2 классовSwift массива 'Object' не имеет член с именем подстрочный

  1. номер
  2. Maze (2d массив)

На viewcontroller У меня есть var mazeGame:Maze = Maze()

Просто над ним на пустой строке У меня есть ошибка «Ожидаемая декларация» Мой код ниже - главная ошибка, которую я хочу решить »« Лабиринт » не имеет члена с индексом «

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

И в классе номера

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

Можете ли вы опубликовать свое определение класса Maze? Также это поможет, если вы опубликуете весь код, но не только строку из него. Спасибо –

+0

Вам нужно переместить этот код в исходное сообщение. То есть ко многим комментариям, очень сложно понять, что на самом деле происходит там. –

+0

Я добавил обновление к своему сообщению о том, как получить доступ к массиву, который вам нужен. Но я уверен, что будет больше ошибок, которые необходимо будет решить. Похоже, это просто начало :) –

ответ

1

Видимо mazeGame имеет тип Maze, который не реализует подстрочный, как результата вы не можете получить доступ к нему в квадратных скобках, как вы делаете в вашем случае.

Вы должны получить доступ к номерам следующим образом:

if (mazeGame.checkRoomNorthExit(row,col)) 

Как конструкторах вам нужно определить метод инициализации для вас класса. Посмотрите объяснение инициализации в книге Свифта - https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html

+0

Когда я пытаюсь получить доступ к комнатам, ошибка, говорящая «Не удалось найти член checkRoomNorthExit» – SaviorStorm

+1

Это означает, что вы не определили метод checkRoomNorthExit в своем классе комнаты. mazeFloor возвращает комнату к концу, а не лабиринт. Что ожидаемая логика в этом случае? Трудно угадать это из кода. –

+0

Я сделал еще одно предположение для логики, которую вы пытаетесь реализовать, сделал другое редактирование :) Но мне нужен ваш совет с точки зрения того, чего вы пытаетесь достичь с помощью своего кода. –

Смежные вопросы