【问题标题】:Arrange messed up array排列乱七八糟的数组
【发布时间】:2015-09-19 18:22:08
【问题描述】:

在我的应用程序中有一个名为 newArray 的数组,其中包含很多数字。应用程序将数字发送到服务器并将它们放入一个名为stalkers 的新数组中。我的问题是某些名称的返回速度比其他名称快,stalkers 数组中的名称可以按任何顺序排列。如何使返回数据的顺序与newArray中对应的数字一致?

假设newArray = ["10002938948","46789890","2984829389"]。我的代码将其发送到服务器并下载名称。对于“10002938948”,服务器返回“Tim”。对于“46789890”,服务器返回“Louis”。对于“2984829389”,服务器返回“Rob”。那么它应该是stalkers = ["Tim","Louis","Rob"],但是因为它们没有按顺序下载(一个页面加载速度比另一个页面快),stalkers = ["Louis","Rob","Tim"]

应该是我可以给每个数字一个 id,所以我可以在 stalkers 数组中按正确的顺序对 id 进行排序。

【问题讨论】:

  • 这里没有足够的信息来解读您的问题。也许您可以添加:到目前为止您尝试过的内容、您的数据集和您的预期响应。
  • “应该是我可以给每个数字一个 id,所以我可以在 stalkers 数组中按正确的顺序对 id 进行排序”他们 ids - newArray 中的值。
  • @matt 是的,我知道他们有 id,但这些 id 在 newArray 中,所以当将结果放入 stalkers 数组时,他们会丢失他们的 id,并且它们的顺序不同,你可以据我所知,不要对它们进行排序..
  • 不要将结果放入 stalkers 数组中。通过 id 键入结果。阅读我的答案...

标签: ios arrays swift swift2


【解决方案1】:

使用newArray 的元素作为键和到达的名称值作为值创建一个字典。当所有结果都到达时,通过循环newArray 创建stalkers 数组,从而保持顺序。

let newArray=["10002938948","46789890","2984829389"]

// For 10002938948, the server returns Tim. 
// For 46789890 the server returns Louis.
// For 2984829389, the server returns Rob.
// Then it should be stalkers=["Tim","Louis","Rob"]

// As they arrive, store each result in a dictionary:

var d = [String:String]()

// note that the order of the next three statements doesn't matter!

// Tim arrives for 10002938948

d["10002938948"] = "Tim"

// Louis arrives for 46789890

d["46789890"] = "Louis"

// Rob arrives 2984829389

d["2984829389"] = "Rob"

// now assemble stalkers by cycling through newArray

let stalkers = newArray.map{d[$0]!} // ["Tim","Louis","Rob"]

【讨论】:

  • 如何将下载的名称附加到字典中?
  • 嘿。我的代码完全按照你说的做。你说“我希望它与原版的顺序相同,但我不知道该怎么做。”好吧,现在你知道该怎么做了。我不在这里了。
  • 没有“虽然”。想想我在告诉你什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 2014-11-29
相关资源
最近更新 更多