数组不存储值
Posted
技术标签:
【中文标题】数组不存储值【英文标题】:Array not storing values 【发布时间】:2016-08-21 04:28:57 【问题描述】:我从解析后端获取值并使用它们创建一个数组,但没有任何内容存储在其中。有人可以告诉我我做错了什么吗?行: let dataEntry = ChartDataEntry(value: values[i], xIndex: i) 回馈“索引超出范围”
var fattyArray: [Double] = []
override func viewDidLoad()
super.viewDidLoad()
let innerQuery = PFUser.query()
innerQuery!.whereKey("objectId", equalTo: "VTieywDsZj")
let query = PFQuery(className: "BodyFat")
query.whereKey("UserID", matchesQuery: innerQuery!)
query.findObjectsInBackgroundWithBlock
(percentages: [PFObject]?, error: NSError?) -> Void in
if error == nil
print("Successful, \(percentages!.count) retrieved")
if let percentage = percentages as [PFObject]!
for percentage in percentages!
print(percentage["BodyFatPercentage"])
self.fattyArray.append(percentage["BodyFatPercentage"].doubleValue)
print(self.fattyArray)
else
print("\(error?.userInfo)")
let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
let unitsSold = fattyArray
setChart(months, values: unitsSold)
func setChart(dataPoints: [String], values: [Double])
var dataEntries: [ChartDataEntry] = []
for i in 0..<dataPoints.count
let dataEntry = ChartDataEntry(value: values[i], xIndex: i)
dataEntries.append(dataEntry)
【问题讨论】:
【参考方案1】:这里有两个问题:
一个问题是findObjectsInBackgroundWithBlock
异步运行,即fattyArray
直到稍后才附加值。您应该将调用 setChart
的代码移动到 findObjectsInBackgroundWithBlock
闭包中。
query.findObjectsInBackgroundWithBlock percentages, error in
if error == nil
// build your array like you did in your question
// but when done, call `setChart` here
let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
let unitsSold = fattyArray
setChart(months, values: unitsSold)
else
print("\(error?.userInfo)")
// but not here
// let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
// let unitsSold = fattyArray
//
// setChart(months, values: unitsSold)
您的setChart
例程给您一个“索引超出范围”错误,因为您正在遍历dataPoints
,但在values
数组中查找值。我在这里看不到任何东西可以保证months
与fattyArray
具有相同数量的条目。
很明显,如果您修复了第一点,您就有更好的机会让它发挥作用(因为您实际上要等到完全检索数据之后才会生成图表),但我在这里仍然看不到任何东西这保证findObjectsInBackgroundWithBlock
将返回至少六个条目。
【讨论】:
谢谢罗伯!那成功了。问题是,尽管我想在未来的几个月里留下没有价值的东西,以此作为继续取得进步并填写它们的动力。有没有办法做到这一点,还是 ChartDataEntries 必须成对? 我想如果您的图表入口点允许使用可选参数(例如nil
值),那么您似乎可以(a)从数据库中检索数据(大概是成对的日期和值)然后; (b) 手动添加具有日期但没有这些未来日期值的数据点。可能有很多不同的方法来处理这个问题,但从概念上讲,这似乎是可能的。但这似乎超出了这个问题的范围......
非常感谢您的帮助!所以我有另一个问题,我搜索并找到了一个你评论过的线程,想知道你是否不介意看一下。我还没有 50pt 的声誉,所以我不能评论那个帖子 (***.com/a/28723081/5109162),但我确实在这里开始了另一个 ***.com/questions/39137259/…以上是关于数组不存储值的主要内容,如果未能解决你的问题,请参考以下文章
如何从另一个数组中的数组中获取数据,该数组在 Java 中存储值?