我是核心數據的noob,所以在這裏。核心數據 - 遍歷NSManagedObject的屬性
我有一個核心數據對象,例如學生。
學生有鬃毛屬性,如姓名,年齡,dob,地址等。
現在我需要將所有這些屬性顯示到表格視圖中。
是否有任何簡單的方法來遍歷對象的學生?還是必須將數據轉換爲某種類型的字典?
如果我需要將它轉換爲字典,是否有任何支持?或者我必須寫自己的功能。
非常感謝您的幫助, 斯蒂芬
我是核心數據的noob,所以在這裏。核心數據 - 遍歷NSManagedObject的屬性
我有一個核心數據對象,例如學生。
學生有鬃毛屬性,如姓名,年齡,dob,地址等。
現在我需要將所有這些屬性顯示到表格視圖中。
是否有任何簡單的方法來遍歷對象的學生?還是必須將數據轉換爲某種類型的字典?
如果我需要將它轉換爲字典,是否有任何支持?或者我必須寫自己的功能。
非常感謝您的幫助, 斯蒂芬
這裏是一個非常簡單的方法來遍歷一個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{
}
斯威夫特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。
有沒有什麼辦法可以做到上述相反,即我應該能夠使用[NSManagedObject setObjectForkey:somekey]保存一些值? – pankaj