我正在使用Swift学习核心数据,我希望看到我的ManagedObjectContext中当前保存的内容。 viewDidLoad()包括println(managedObjectContext!)
,它向控制台输出类似<NSManagedObjectContext: 0x1701f8500>
的内容。
如何查看LogItem的实际属性是什么?
由于
答案 0 :(得分:5)
NSManagedObjectContext
中未保存托管对象。它们保存在持久存储中(如SQLite数据库)。 NSManagedObjectContext
用于将持久存储中的托管对象加载到内存中并对其进行更改。然后,您将更改保存回持久存储或丢弃它们。
如果要将持久存储中的托管对象(名为YourEntity
的实体的实例)加载到NSManagedObjectContext,请使用NSFetchRequest
:
let fetchRequest = NSFetchRequest(entityName: "YourEntity")
if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) {
println(fetchResults);
}
如果要查看当前加载到NSManagedObjectContext的对象,可以使用registeredObjects
方法。如果您只想查看更新/插入/删除的对象,可以使用以下方法:updatedObjects
,insertedObjects
,deletedObjects
。
答案 1 :(得分:3)
_NSManagedObjectContext_
通过在相同的上下文中将这些对象实际加载到内存中来管理_NSManagedObjects_
。因此,如果要显示对象模型所包含的内容,则可以访问managedObjectContext的_registeredObjects_
属性。但请记住,它只会登记/所有已加载到上下文的对象。
println(managedObjectContext!.registeredObjects);
答案 2 :(得分:2)
您可以将托管对象上下文视为使用模型对象的工作台。您加载它们,操纵它们,并将它们保存在该工作台上。加载和保存由持久性存储协调器调解。
let fetchRequest = NSFetchRequest(entityName: "Entity")
if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [Entity] {
for info in fetchResults {
println(info.valueForKey("attribute"));
}
}