【问题标题】:Swift - CoreData - DetailViewController - passing an objectSwift - CoreData - DetailViewController - 传递一个对象
【发布时间】: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?

标签: ios core-data swift ios8


【解决方案1】:

请参阅Type Casting for Any and AnyObject 上的相关 Swift 文档位。就您而言,这是一种选择:

let detail: Event = self.detailItem as Event

这真的非常基础,在编写示例代码之前,您应该多阅读一下 Swift 书籍。

【讨论】:

  • 我知道我用过那个或类似的东西。我没有做的是将它从 NSManagedObject 更改为 InsertNewObject 中的 Event,这就是为什么它以前对我不起作用的原因。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2015-09-18
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多