从Core Data ManagedObjectContext显示属性

时间:2014-12-05 08:21:29

标签: ios xcode debugging core-data swift

我正在使用Swift学习核心数据,我希望看到我的ManagedObjectContext中当前保存的内容。 viewDidLoad()包括println(managedObjectContext!),它向控制台输出类似<NSManagedObjectContext: 0x1701f8500>的内容。

如何查看LogItem的实际属性是什么?

由于

3 个答案:

答案 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方法。如果您只想查看更新/插入/删除的对象,可以使用以下方法:updatedObjectsinsertedObjectsdeletedObjects

答案 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"));
        }
     }