对从CoreData填充的数组进行排序

时间:2015-03-24 18:20:01

标签: arrays swift core-data jbchartview

我有一个文本字段,用户可以在其中输入数值并将其作为字符串存储到核心数据中。反过来,我正在检索这些值,并将它们作为int存储在数组中。我想要做的是按照用户存储值的顺序对该数组进行排序,因为我试图绘制值以查看它们随时间变化的趋势。现在,我所能告诉的是,这些值以完全随机的方式填充我的图表。

var client: Client! = nil
var weights = []

func getWeights() {
        var assessmentWeights: NSSet = client.assessment.valueForKey("weight") as NSSet
        var weightSet: NSSet = assessmentWeights.valueForKey("integerValue") as NSSet
        weights = weightSet.allObjects
        println(weights)
    }

任何帮助表示赞赏! :)

1 个答案:

答案 0 :(得分:0)

如果您已经有一个与每个权重条目相关联的时间戳,您可以(a)创建带有排序描述符的NSFetchRequest,或者您可以(b)对NSSet中已有的值进行排序

由于我没有看到太多代码,这里是选项(b)的一个例子:

var weights = [Int]();
if let entries = client.assessment.allObjects as? [Assessment] {
    let sorted = entries.sorted {
        return $0.timestamp.compare($1.timestamp) == .OrderedAscending
    }
    for assessment in sorted {
        if let intValue = assessment.weight.toInt() {
            weights.append(intValue)
        }
    }
}

return weights

说完这个,在我看来,最好的选择是将权重值存储为数值,并使用NSFetchRequest(结果类型.DictionaryResultType)和时间戳上的排序描述符来获取值想。