【问题标题】:How to iterate NSArray of results into separate arrays如何将结果的 NSArray 迭代到单独的数组中
【发布时间】:2014-04-21 20:21:31
【问题描述】:

我正在使用Parse 进行数据存储。我为我的 Game Turn Scores 创建了一个查询,它在回调中返回一个数组,如下所示:

(
"<GameTurnScore:ipPd3tKRc1:(null)> {\n    GameRef = \"<Game:jGBok5ZiXM>\";\n    TotalGuesses = 1;\n    TurnDifficulty = 0;\n    TurnNumber = 1;\n    TurnScore = 500;\n    UserRef = \"<PFUser:e3Wyo4JaKC>\";\n}",
"<GameTurnScore:AendjA9Yzq:(null)> {\n    GameRef = \"<Game:jGBok5ZiXM>\";\n    TotalGuesses = 6;\n    TurnDifficulty = 1;\n    TurnNumber = 2;\n    TurnScore = 48;\n    UserRef = \"<PFUser:UgkZDtDsVC>\";\n}",
"<GameTurnScore:ZTNmSkGae1:(null)> {\n    GameRef = \"<Game:jGBok5ZiXM>\";\n    TotalGuesses = 8;\n    TurnDifficulty = 2;\n    TurnNumber = 3;\n    TurnScore = 60;\n    UserRef = \"<PFUser:e3Wyo4JaKC>\";\n}",
"<GameTurnScore:8QbcznSa1u:(null)> {\n    GameRef = \"<Game:jGBok5ZiXM>\";\n    TotalGuesses = 3;\n    TurnDifficulty = 1;\n    TurnNumber = 4;\n    TurnScore = 99;\n    UserRef = \"<PFUser:UgkZDtDsVC>\";\n}",
"<GameTurnScore:Mj6LmdE5LY:(null)> {\n    GameRef = \"<Game:jGBok5ZiXM>\";\n    TotalGuesses = 8;\n    TurnDifficulty = 0;\n    TurnNumber = 5;\n    TurnScore = 60;\n    UserRef = \"<PFUser:e3Wyo4JaKC>\";\n}",
"<GameTurnScore:qeDWt7KFK2:(null)> {\n    GameRef = \"<Game:jGBok5ZiXM>\";\n    TotalGuesses = 12;\n    TurnDifficulty = 1;\n    TurnNumber = 6;\n    TurnScore = 24;\n    UserRef = \"<PFUser:UgkZDtDsVC>\";\n}",
"<GameTurnScore:RMRYi9fkUu:(null)> {\n    GameRef = \"<Game:jGBok5ZiXM>\";\n    TotalGuesses = 1;\n    TurnDifficulty = 2;\n    TurnNumber = 7;\n    TurnScore = 500;\n    UserRef = \"<PFUser:e3Wyo4JaKC>\";\n}",
"<GameTurnScore:Fd78iI8NGo:(null)> {\n    GameRef = \"<Game:jGBok5ZiXM>\";\n    TotalGuesses = 6;\n    TurnDifficulty = 1;\n    TurnNumber = 8;\n    TurnScore = 48;\n    UserRef = \"<PFUser:UgkZDtDsVC>\";\n}",
"<GameTurnScore:qioVUqmbEB:(null)> {\n    GameRef = \"<Game:jGBok5ZiXM>\";\n    TotalGuesses = 1;\n    TurnDifficulty = 2;\n    TurnNumber = 9;\n    TurnScore = 500;\n    UserRef = \"<PFUser:e3Wyo4JaKC>\";\n}",
"<GameTurnScore:iFLS39GqLM:(null)> {\n    GameRef = \"<Game:jGBok5ZiXM>\";\n    TotalGuesses = 1;\n    TurnDifficulty = 1;\n    TurnNumber = 10;\n    TurnScore = 300;\n    UserRef = \"<PFUser:UgkZDtDsVC>\";\n}"
)  

然后我需要将这些分数分成两个单独的数组。目前我根据用户分开,但我想根据 TurnNumber 分开这些。

如果轮数不存在,我不确定的具体部分是插入一个空索引或[NSNull null] 到索引中。

例如,我有两个新的NSArrays,分别称为scoreBlock1scoreBlock2。如果缺少第 3 轮,我希望在scoreBlock1 中提供以下信息。

转号1
NSNull null
转号5
转号7
转号9

迭代结果数组以实现此目的的最佳方法是什么?

【问题讨论】:

  • 为什么要用空值来代替缺少的转弯?似乎只是让它们丢失会更容易处理。另外,您如何“知道”缺少转弯?
  • 谢谢,我想原因是我知道每 5 个索引都有一个对象。如果我只是将任何转弯添加到新数组中,我如何检查索引中是否有对象?

标签: ios objective-c arrays nsarray


【解决方案1】:

您可以使用[array addObject:[NSNull null]] 将空值插入到数组中。

您可以稍后使用[object isKindOfClass:[NSNull class]] 测试是否存在空值

【讨论】:

  • 谢谢,我知道我可以使用valueForKey...objectForKey 来检索我需要的值。问题更多是关于如何处理何时会丢失特定的转弯分数并在此处插入空值。
  • 如果您使用 valueForKeyPath 的切片变体,它会将 NSNull 用于缺失值,这就是我解释您的请求的方式。如果您不希望对数组进行切片,而只是对查找缺失的分数感兴趣,则可能需要查看 filteredArrayUsingPredicate 和谓词 TurnNumber = nil。
  • 如果你想在 for 循环中构建两个结果数组,你可以 addObject:[NSNull null]
  • 我不仅在寻找 TurnNumber,我以后也需要其他数据,理论上 TurnNumber 只是用于拆分数组。您会建议其他方法吗?
  • 如果我有一个 for 循环,我可以检查 turnNumber 奇数/偶数并拆分为数组,但我怎么知道 for 循环中是否缺少 turnNumber?
猜你喜欢
  • 2021-04-27
  • 2010-11-02
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多