将 NSManagedObject 子类化 Core Data 对象打印到控制台在 Swift 中返回空行
Posted
技术标签:
【中文标题】将 NSManagedObject 子类化 Core Data 对象打印到控制台在 Swift 中返回空行【英文标题】:Printing NSManagedObject subclassed Core Data object to console returns empty line in Swift 【发布时间】:2014-12-23 08:03:42 【问题描述】:我正在使用 Core Data 开发一个 Swift 应用程序。我创建了我的*.xcdatamodeld
文件并创建了一个NSManagedObject Subclass
(Editor -> Create NSManagedObject Subclass...
)。
一切正常,除非我尝试println
该类的实例化对象(我们称之为Person
)控制台打印空白或简单地打印Optional()
(如果未解包)。
我尝试通过类扩展添加DebugPrintable
或Printable
,但没有成功。
这是 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?你在使用视图控制器容器吗? 我也遇到过同样的问题,虽然它不是空白 - 打印为空白.. 【参考方案1】:你可以用这个:
NSLog("My managed object: %@", managedObject)
由于某种原因,它不会使用println
输出,但NSLog
工作正常。
【讨论】:
以上是关于将 NSManagedObject 子类化 Core Data 对象打印到控制台在 Swift 中返回空行的主要内容,如果未能解决你的问题,请参考以下文章
NSLog'd 时子类化的 NSManagedObject 不调用描述
将 NSManagedObject 子类化 Core Data 对象打印到控制台在 Swift 中返回空行
我可以向 NSManagedObject 的子类的子类添加属性吗?