gpt4 book ai didi

ios - 根据获取的属性对实体进行排序

转载 作者:行者123 更新时间:2023-11-28 09:10:28 27 4
gpt4 key购买 nike

在我的应用程序(用 Swift 编写)中,我使用了一个具有两种配置的 Core Data 模型,每一种都使用不同的保存路径(一个在应用程序包中是只读的,另一个在 Documents 文件夹中)。我在两种配置之一中设置了具有以下属性的实体“Domanda”: Domanda Entity在另一个配置中,我设置了一个具有以下属性的实体“StatDomanda”: StatDomanda Entity“StatDomanda”用于用户数据,而“Domanda”用作预加载源。我知道我无法在两个实体(两个配置)之间建立关系,但我会根据 StatDomanda.numero == Domanda 的“StatDomanda”实体的“corrette”属性来订购“Domanda”实体。 numero 和 StatDomanda .argomento == Domanda.argomento.nomeArgomento。并非所有“Domanda”对象都有对应的“StatDomanda”对象。我用这个谓词在“Domanda”实体中设置了一个获取的属性(称为“statistiche”)

$FETCH_SOURCE.numero = numero AND $FETCH_SOURCE.argomento.nomeArgomento = argomento

但我不明白如何使用它来排序对象。

感谢您的帮助!

最佳答案

我找到了一个解决方案,我不知道这是否是最好的方法,但它确实有效!在我的核心数据管理器类 (ModelManager) 中,我使用此函数来获取所有“Domanda”实体:

func getAllQuestions() -> [Domanda] {
let fetchRequest = NSFetchRequest(entityName: "Domanda")
let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [Domanda]
return fetchResults!
}

在我的 ViewController 中,我使用此代码获取基于“statistiche”获取属性的属性“corrette”的“Domanda”实体的排序数组:

override func viewDidLoad() {
super.viewDidLoad()

var arrayDomande = ModelManager.instance.getAllQuestions()
var sortedArrayDomande = self.sortArray(arrayToSort: arrayDomande)
}

func sortArray(arrayToSort sarray: Array<Domanda>) -> Array<Domanda> {

// 1 - Filter the array to find only questions that have stats
var onlyAnswered = sarray.filter({($0.valueForKey("statistiche") as [Domanda]).count == 1})

// 2 - Sort the array based on fetched property
var sortedArrayDomande = sorted(onlyAnswered, {
let first = ($0.valueForKey("statistiche") as [StatDomanda])[0]
let firstC = first.corrette.integerValue

let second = ($1.valueForKey("statistiche") as [StatDomanda])[0]
let secondC = second.corrette.integerValue

return firstC > secondC
})

return sortedArrayDomande
}

甚至是浓缩形式:

// 2 - Sort the array based on fetched property
var sortedArrayDomande = sorted(onlyAnswered, {($0.valueForKey("statistiche") as [StatDomanda])[0].corrette.integerValue > ($1.valueForKey("statistiche") as [StatDomanda])[0].corrette.integerValue})

大家好,我们下次再见!

关于ios - 根据获取的属性对实体进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29480037/

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