Swift - CoreData - DetailViewController - 传递一个对象

时间:2014-08-09 04:59:51

标签: ios core-data swift ios8

我正在创建一个CoreData项目。我使用了XCode6(beta 5)中的Master / Detail模板。我过去几天研究了它,并且我对它使用的anyObject?感到困惑。我正在传递一个事件。正如我对Objective-C所做的那样,我想用Event.eventName代替detail.valueForKey("eventName").description

我尝试了很多尝试,现在我有了一些有效的方法。但它运作正常吗?有没有办法以比我更好(或更有效)的方式将事件(对象)传递给DetailViewController?

import UIKit

class DetailViewController: UIViewController
{
    @IBOutlet var textFieldEventName: UITextField!
    @IBOutlet var textFieldStartDate: UITextField!
    @IBOutlet var textFieldEndDate: UITextField!
    @IBOutlet var labelNumberOfDays: UILabel!

    var currentEvent: Event!

    required init(coder aDecoder: NSCoder!)
    {
        super.init(coder: aDecoder)
    }

    override func viewDidLoad()
    {
        super.viewDidLoad()
        updateDisplay()
    }

    func updateDisplay()
    {
        if let textField = self.textFieldEventName
        {
            textFieldEventName.text = currentEvent.eventName
            textFieldStartDate.text = currentEvent.startDate
            textFieldEndDate.text = currentEvent.endDate
            labelNumberOfDays.text = "\(currentEvent.orderNumber)"
        }
    }
}

1 个答案:

答案 0 :(得分:0)

请参阅Type Casting for Any and AnyObject上的相关Swift文档位。在您的情况下,这是一个选项:

let detail: Event = self.detailItem as Event

这非常基本,你应该在编写代码之前阅读一下Swift书。