【发布时间】:2014-08-09 04:59:50
【问题描述】:
我正在创建一个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)"
}
}
}
【问题讨论】:
-
为什么不将
AnyObject?转换为Event?既然你知道这是一个事件,这就是 AnyObject 的用途 -
这就是我有点困惑的地方。在 Master / Detail 模板上,他们使用 var detailItem: AnyObject?然后如果让 detail: AnyObject = self.detailItem... 但是如果我尝试执行 detail.startDate 或 detailItem.startDate 它会给出错误(AnyObject 没有名为“startDate”的成员。但实体事件确实有一个,这就是 prepareForSegue 发送的内容。那么如何将 AnyObject? 转换为 Event?