ios - 变量赋值后的 nil 值

标签 ios swift

我有一个包含文本字段和按钮的 VC。我有一个简单的任务是将 textField 文本数据传递到我的模型实体。但是,虽然我想将 textField 数据分配给实体数据,但我的数据仍然为零。 我不明白是什么导致了这样的问题

class InputTextViewController: UIViewController {

    @IBOutlet weak var messageTextField: UITextField!

    //I receive user from parent VC by segue
    var userSendMessageTo: User!
    var tableView: UITableView?
    var message: Message { return Message(userSendMessageTo) } 
    // initialising object of my entity class

    override func viewDidLoad() {
        super.viewDidLoad()
        print(userSendMessageTo.name)
        //name is right
    }

    func createMessage() {
        message.messageText = messageTextField.text
        message.messageTime = Date()
        print(message.messageText) //nil
        print(message.messageTime) //nil

    }


    @IBAction func sendMessge(_ sender: Any) {

        createMessage()
        userSendMessageTo.mesaageHistory.append(message)

        print(userSendMessageTo.mesaageHistory[0].messageText) //nil
    }

我的模型

class Message {

    var messageText: String?
    var messageTime: Date?
    var messageInage: UIImage?
    var user: User

    init(_ user: User) {
        self.user = user
    }

}

class User {

    let name: String

    var mesaageHistory = [Message]()

    init(name: String) {
        self.name = name
    }


}

最佳答案

结构 var message: Message { return Message(userSendMessageTo) } 每次被调用时都会返回一个新的 Message 对象。

因此,您正在创建一个消息对象,为其分配文本,然后将其丢弃。然后您创建第二个消息对象,为其指定一个日期并将其丢弃。然后创建第三个消息对象并检查其文本(为 nil),然后创建第四个消息对象并检查其日期,该日期也为 nil。

试试这个:

class InputTextViewController: UIViewController {

    @IBOutlet weak var messageTextField: UITextField!
    var userSendMessageTo: User!
    var tableView: UITableView?
    var message: Message?

    func createMessage() {
        message = Message()
        message!.messageText = messageTextField.text
        message!.messageTime = Date()
        print(message!.messageText) //won't be nil
        print(message!.messageTime) //won't be nil
    }
}

关于ios - 变量赋值后的 nil 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43023131/

相关文章:

swift - 当我在文本字段中编辑文本时,NavigationLink 会激活

ios - 如何将CoreMl模型包含到cocoa pod框架中?

ios - 带有 SDK 4.4 的 MonoTouch : how to run app in Simulator 6. 0?

ios - URL 连接后无法将 Web 服务数据传递到另一个 View Controller

ios - 我不明白委托(delegate)们在说什么

string - 从 Swift 中的字符串中删除第一个字符的最简洁方法是什么?

ios - 如何为不同的目标分配位置特定的 BundleDisplayNames

ios - 如何实现具有放大和透明效果的图片滚动机制?

ios - 自定义测量单位

ios - iPad 上的工具栏未填满整个宽度