【问题标题】:Objective-C How do I enumerate a dictionary with letters and positionsObjective-C如何枚举带有字母和位置的字典
【发布时间】:2014-10-06 20:19:01
【问题描述】:

我想我炸毁了我的大脑。我有一本包含两个数组的字典:字母和数字。数字是字母在板上的位置。

如何枚举这些数组以便:

在64个方格的棋盘上,字母在其棋盘编号上,其他棋盘编号设置为空白?

我的目标是让人们选择一个有字母的方块,并且如果他们选择一个没有字母的方块不会崩溃。

【问题讨论】:

  • 字典是干什么用的?
  • 我忘了说我需要在每个加载的方块上都有不同的项目(形状、颜色、声音)。我认为字典可能是识别特定位置的值的一种方法。
  • 因此您需要一个包含 64 个条目的字典数组。您的具体问题是什么?
  • 我现在可以识别每个方块,但我似乎无法显示标题或其他属性。使用这个:[button setTitle:@"a" forState:UIControlStateNormal];我记录了正方形,发现值是正确的。
  • 这听起来像是一个 UI 问题——与数组和字典无关。

标签: objective-c fast-enumeration


【解决方案1】:

如果我可以建议另一种数据结构,最好使用长度为 64 的数组,每个元素代表棋盘上的一个正方形。一个空字符串代表一个空方格,一个字母代表一个带有该字母的方格。

例如:

// initialize game board
NSMutableArray *board = [[NSMutableArray alloc] init];
for (int loop=0; loop<64; loop++) {
    [board addObject:@""]; // indicates an empty square
}

// set the pieces
board[17] = @"a";
board[23] = @"b";
board[61] = @"c";

// test a board square
if ([board[43] isEqualToString:@""]) {
    // square is empty
} else {
    // square has a letter
}

【讨论】:

  • 如果我在每个方格都需要不同的物品(颜色、形状、声音)怎么办?
  • 然后,您应该创建一个 Square 对象数组,而不是字符串数组。创建一个 Square 类,该类具有您需要的属性。如果您需要更多帮助,请提出一个新问题,而不是在此答案上使用 cmets。
  • 是的,Square 对象是使用字典的替代方法。在某种程度上,字典更简单,因为您可以轻松添加新属性,但它不是一个整洁和“结构化”的。 (在这种情况下,我更喜欢使用字典,但你还没有看到我的办公室。)
猜你喜欢
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多