在Swift中将NSManagedObject子类化的Core Data对象打印到控制台会返回空行

10
我正在开发一款使用Core Data的Swift应用程序。我创建了*.xcdatamodeld文件并创建了一个NSManagedObject子类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对象数组中的情况下,仅打印[ , , , , ]


请展示您实例化对象的代码。 - zisoft
我在使用Xcode 6.1 (6A1052d)时遇到了同样的问题。我创建了一个gist来演示无论我如何获取对象都没有关系: https://gist.github.com/bgrace/021f55a9f160685e2433 — 我很想知道是否有人能够正常使用NSManagedObject上的Printable。 - Brett
我也遇到了这个问题,试图将NSManagedObject子类的数组转换为字符串以保存在错误报告中。目前,我正在使用以下解决方法: var stringArray = String for subclass in arrayOfSubclass { stringArray.append(subclass.name) }然后使用stringArray.description获取连接的字符串。 - jlichti
你如何初始化Core Data?你是否使用视图控制器容器? - carlodurso
我曾经遇到过同样的问题,尽管它不是空白的 - 被打印为空白。 - BaSha
这个限制/bug存在于xcode 6.2 (6C131e)版本中...在网上搜索了很多,但没有找到除使用 NSLog 外的其他解决方案。 - Aнгел
1个回答

8
您可以使用以下内容:
NSLog("My managed object: %@", managedObject)

出于某些原因,它无法使用println输出,但NSLog可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接