【问题标题】:Display Attributes from Core Data ManagedObjectContext显示来自 Core Data ManagedObjectContext 的属性
【发布时间】:2014-12-05 08:21:29
【问题描述】:

我正在使用 Swift 学习 Core Data,我想查看我的 ManagedObjectContext 中当前保存的内容。 viewDidLoad() 包含println(managedObjectContext!),它会向控制台输出类似<NSManagedObjectContext: 0x1701f8500> 的内容。

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

谢谢

【问题讨论】:

    标签: ios xcode debugging core-data swift


    【解决方案1】:

    未保存托管对象 NSManagedObjectContext。它们保存在持久存储中(如 SQLite 数据库)。 NSManagedObjectContext 用于将托管对象从持久存储加载到内存中并对其进行更改。然后,您要么将更改保存回持久存储区,要么丢弃它们。

    如果您想将托管对象(名为 YourEntity 的实体的实例)从持久存储加载到 NSManagedObjectContext,请使用 NSFetchRequest

    let fetchRequest = NSFetchRequest(entityName: "YourEntity")
    if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) {
        println(fetchResults);
    }
    

    如果要查看当前加载到 NSManagedObjectContext 中的对象,可以使用registeredObjects 方法。如果您只想查看更新/插入/删除的对象,可以使用以下方法,称为:updatedObjectsinsertedObjectsdeletedObjects

    【讨论】:

      【解决方案2】:

      _NSManagedObjectContext_ 通过将这些对象实际加载到同一上下文下的内存中来管理_NSManagedObjects_。因此,如果您想显示您的对象模型所包含的内容,那么您可以访问 managedObjectContext 的_registeredObjects_ 属性。但请记住,它只会列出/所有已加载到上下文的对象。

      println(managedObjectContext!.registeredObjects);
      

      【讨论】:

        【解决方案3】:

        您可以将托管对象上下文视为处理模型对象的工作台。您加载它们,操作它们,然后将它们保存在该工作台上。加载和保存由持久存储协调器进行调解。

            let fetchRequest = NSFetchRequest(entityName: "Entity")
            if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as?       [Entity] {            
                 for info in fetchResults {
                 println(info.valueForKey("attribute"));
                }
             }
        

        【讨论】:

          猜你喜欢
          • 2013-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-08
          • 1970-01-01
          • 2012-11-30
          • 2021-01-16
          相关资源
          最近更新 更多