【问题标题】:Printing NSManagedObject subclassed Core Data object to console returns empty line in Swift将 NSManagedObject 子类化 Core Data 对象打印到控制台在 Swift 中返回空行
【发布时间】:2014-12-23 08:03:42
【问题描述】:

我正在使用 Core Data 开发一个 Swift 应用程序。我创建了我的*.xcdatamodeld 文件并创建了一个NSManagedObject Subclass (Editor -> Create NSManagedObject Subclass...)。

一切正常,除非我尝试println 该类的实例化对象(我们称之为Person)控制台打印空白或简单地打印Optional()(如果未解包)。

我尝试通过类扩展添加DebugPrintablePrintable,但没有成功。

这是 CoreData 对象的已知限制吗?我错过了什么?

为了清楚起见添加代码:

/// Person.swift (auto-generated by Xcode)
class Person: NSManagedObject {

   @NSManaged var firstname: String
   @NSManaged var lastname: String

}

我的扩展:

/// Person+Helpers.swift
extension Person : Printable, DebugPrintable {
   override var description : String {
       return "test"
   }

   override var debugDescription : String {
       return "debug test"
   }
}

控制台打印空行,或者在Person对象数组的情况下,它只是打印[ , , , , ]

【问题讨论】:

  • 请显示实例化对象的代码。
  • 我在 Xcode 6.1 (6A1052d) 上看到了同样的情况。我创建了一个要点来证明我如何获取对象并不重要:gist.github.com/bgrace/021f55a9f160685e2433 — 我很想知道 NSManagedObject 上的 Printable 是否适用于任何人。
  • 我刚刚也遇到了这个问题,试图将 NSManagedObject 子类的数组转换为字符串以保存在错误报告中。现在我这样做是一种解决方法: var stringArray = [String]() for subclass in arrayOfSubclass { stringArray.append(subclass.name) } 然后使用 stringArray.description 来获取连接的字符串。
  • 如何初始化 Core Data?你在使用视图控制器容器吗?
  • 我也遇到过同样的问题,虽然它不是空白 - 打印为空白..

标签: ios xcode core-data swift println


【解决方案1】:

你可以用这个:

NSLog("My managed object: %@", managedObject)

由于某种原因,它不会使用println 输出,但NSLog 工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 2017-12-15
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    相关资源
    最近更新 更多