swift - NSFetchRequest ReturnsDistinctResults 给出空结果

标签 swift

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

相关文章:

ios - 获取当前设备方向

ios - 一种忽略方法抛出的任何错误的优雅方法

ios - UICollectionView 保持水平列表滚动位置

ios - 在 iOS 中出现键盘时滑动 UIView

ios - 在 iOS7 Swift 项目中包含来自 Swift 源的 Pod

swift - 具有多个线宽和背景图像的 uibezierpath (swift)

swift - 3d模型SceneKit/ARKit最好使用哪种格式文件

ios - 快速传递错误参数

ios - collectionView 图片 : Change Height Dynamically in Swift

ios - Xcode错误导入模块未被导入