核心数据 – 遍历NSManagedObject的属性

我是核心数据的noob,所以在这里。

我有一个核心数据对象,例如学生。

学生有鬃毛属性,如姓名,年龄,dob,地址等。

现在我需要显示所有这些属性到一个表格视图。

有没有简单的方法来遍历对象的学生? 或者我必须将数据转换成某种types的字典?

如果我需要将其转换为字典,是否有任何支持? 或者我必须写我自己的function。

非常感谢您的帮助,Stephen

这是一个非常简单的方法来遍历一个NSManagedObject:

NSEntityDescription *entity = [myManagedObject entity]; NSDictionary *attributes = [entity attributesByName]; for (NSString *attribute in attributes) { id value = [myManagedObject valueForKey: attribute]; NSLog(@"attribute %@ = %@", attribute, value); } 

如何做到这一点(以及更多的)的线索来自奥贝格曼的博客: http : //oleb.net/blog/2011/05/inspecting-core-data-attributes/

如果你像我一样,并试图解决这个问题在Swift这里是我是如何做到的。

SWIFT 3:

 let request:NSFetchRequest<ENTITY_NAME> if #available(iOS 10.0, *){ request = ENTITY_NAME.fetchRequest() as! NSFetchRequest<ENTITY_NAME> }else{ request = NSFetchRequest<ENTITY_NAME>(entityName: "ENTITY_NAME") } do{ let entities = try YOUR_MOC.fetch(request) for item in entities{ for key in item.entity.attributesByName.keys{ let value: Any? = item.value(forKey: key) print("\(key) = \(value)") } } }catch{ } 

Swift 2:

  let request = NSFetchRequest(entityName: "ENTITY_NAME") do{ let entities = try YOUR_MOC.executeFetchRequest(request) as! [YOUR_ENTITY] for item in entities{ for key in item.entity.attributesByName.keys{ let value: AnyObject? = item.valueForKey(key) print("\(key) = \(value)") } } }catch{ } 

如果你想获得关系实体的键/值,那么你应该使用propertiesByName而不是像这样的attributesByName

SWIFT 3:

 for key in item.entity.propertiesByName.keys{ let value: Any? = item.value(forKey: key) print("\(key) = \(value)") } 

SWIFT 2:

 for key in item.entity.propertiesByName.keys{ let value: AnyObject? = item.valueForKey(key) print("\(key) = \(value)") } 

只要记住要小心,因为它是一个NSManagedObject。