gpt4 book ai didi

swift - NSFetchRequest ReturnsDistinctResults 给出空结果

转载 作者:行者123 更新时间:2023-11-30 10:04:31 25 4
gpt4 key购买 nike

我正在尝试过滤掉 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com