我有一个具有以下属性的实体“人物”:
-name
-surname
-age
我创建了多个对象:
(Ben,Black,18)
(约翰·史密斯,19)
(伊凡,Borzov,18)
(DEN,巴兰,20)
(肯特,Broman,20)
如何接收数组或任何其他方式来构建仅具有唯一年龄的表[18,19,20]
请在Swift中提供答案。
P.S。当然我可以获取所有对象,并手动搜索唯一,但我希望有更好的解决方案)
谢谢!
答案 0 :(得分:5)
您可以同时使用NSFetchRequest的propertiesToFetch
和returnsDistinctResults
属性来获取所有实体的不同年龄结果。
let fetchRequest = NSFetchRequest(entityName: "Person")
fetchRequest.resultType = .DictionaryResultType
fetchRequest.propertiesToFetch = ["age"]
fetchRequest.returnsDistinctResults = true
let result = try! managedObjectContext.executeFetchRequest(fetchRequest)
答案 1 :(得分:0)
您可以检索以下代码之类的年龄,在视图中调用此功能,
var getAllLogObj = [NSManagedObject]()
var allLogsArray : NSMutableArray = NSMutableArray()
func getAllLogs()
{
let appDelegate =
UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName:"Person")
var fetchedResults = [NSManagedObject]()
let _ : NSError! = nil
do {
fetchedResults = try managedContext.executeFetchRequest(fetchRequest) as! [NSManagedObject]
getAllLogObj = fetchedResults
} catch {
print("Fetching error : \(error)")
}
if(getAllLogObj.count > 0)
{
self.allLogsArray.removeAllObjects()
self.allLogsArray = NSMutableArray()
for(var i : Int = 0; i < getAllLogObj.count; i++)
{
let ageString = getAllLogObj[i].valueForKey("age") as? NSString
self.allLogsArray.addObject(ageString)
}
}
self.tblComplaintList.reloadData()
}
它在我的工作正常。希望这对你也有帮助。