我正在尝试过滤掉 fetchRequest 结果中的重复项。我使用以下代码:
let sortDescriptor = NSSortDescriptor(key: "lastupdate", ascending: false)
let sortDescriptors = [sortDescriptor]
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext
let fetchRequest = NSFetchRequest(entityName:"Details")
fetchRequest.sortDescriptors = sortDescriptors
fetchRequest.propertiesToFetch = [ "orig_id" ]
fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType
fetchRequest.returnsDistinctResults = true
let company_temp = try context.executeFetchRequest(fetchRequest)
let company = company_temp as! [Details]
for t in company {
let id = t.orig_id
print(id)
self.myarray.append("\(id)")
}
当我注释掉这三行时:
fetchRequest.propertiesToFetch = [ "orig_id" ]
fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType
fetchRequest.returnsDistinctResults = true
我的数组中有 8 个项目。我的代码有什么问题吗?
最佳答案
您保存了上下文吗?
我有同样的问题。当您有未保存的更改时,NSDictionaryResultType 不会反射(reflect)持久存储的当前状态。请参阅Apple Docs关于 includesPendingChanges:
方法。
因此,在代码之前执行一个简单的 context.save()
可能会解决您的问题。
另一个问题是这一行会崩溃:let company = company_temp as! [详细信息]
,因为您将得到一个字典
。不是 NSManagedObject
列表。
关于swift - NSFetchRequest ReturnsDistinctResults 给出空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843453/