@MaxR

Swift: как сохранить ссылку на другой объект в параметрах класса?

Я только начал учить Apple Swift и не могу понять, как сохранить ссылку на другой объект в параметрах класса?

Например:
// List - Мой кастовый класс

class RecordsList: NSObject {

    var listObj: List!

    init (inout list: List!)
    {
        self.listObj = list
    }
    func printData()
    {
        println(self.listObj.name)
    }
}


var listObject = List()
listObject.name = "FirstValue"

var RL = RecordsList(&listObject)
listObject.name = "SecondValue"

RL.printData()

// Я ожидаю: "SecondValue"
// Но получаю FirstValue =(

Пожалуйста, помогите мне получить "SecondValue")
  • Вопрос задан
  • 1114 просмотров
Решения вопроса 1
@rsi
software engineer
А это точно верный листинг? Вы как то лихо RL создали, ни var ни let или теперь так можно?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Flanker_4
@Flanker_4
У меня ваша версия вообще не собралась. Вот так нормально. Предположу, что проблема в inout и в том что передаваемый параметр объявлен не с тем типом явно (optional или !). От ! типов вообще лучше отказаться и поменьше их использовать, это скорей костыль.

class List:NSObject{
    internal var name:String?
}


class RecordsList: NSObject {
    
    var listObj: List?
    
    init (inout list: List?)
    {
        self.listObj = list
    }
    func printData()
    {
        println(self.listObj?.name)
    }
}

        var listObject:List? = List()
        listObject?.name = "FirstValue"
        
        var RL = RecordsList(list: &listObject)
        listObject?.name = "Second Value"
        
        RL.printData()

Вот так норм
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы