Iphone 通过NSString加载地图

Iphone 通过NSString加载地图,iphone,objective-c,Iphone,Objective C,我正在做一个游戏,需要在多维数组中保存一个平铺贴图。在我的游戏中,我制作了所有这些地图,这些地图都是NSString,包含所有需要保存的值,我希望将NSString的所有256个值保存到一个int 16x16多维数组中 这是我目前的代码,但它不工作 -(void)LoadMap:(NSString*)mapString { for(int h = 0; h < kMapSize; h++) { for(int w = 0; w < kMapSize;

我正在做一个游戏,需要在多维数组中保存一个平铺贴图。在我的游戏中,我制作了所有这些地图,这些地图都是NSString,包含所有需要保存的值,我希望将NSString的所有256个值保存到一个int 16x16多维数组中

这是我目前的代码,但它不工作

-(void)LoadMap:(NSString*)mapString
{
    for(int h = 0; h < kMapSize; h++)
    {
        for(int w = 0; w < kMapSize; w++)
        {
            map[w][h] = [[mapString substringWithRange:NSMakeRange((h)+(w*kMapSize), 1)] intValue];
        }

    }

}
-(void)LoadMap:(NSString*)mapString
{
对于(int h=0;h

任何帮助都会很好,谢谢:)

有两个潜在错误:

  • kMapSize
    可能不等于16。这个变量有一个误导性的名称,因为一般读者会认为它应该是256。也许可以将其重命名为kMapWidth
  • mapString
    的长度可能不是256个字符。您可能需要在
    LoadMap
    的开头检查
    [mapString length]

    • 下面的代码工作正常。也许第二行是错误的原因

      // initial data
      NSInteger kMapSize = 3;
      char map[3][3];   <-- this row ?
      NSString *mapString = @"000111222";
      
      // put initial data into 'map' array
      for(int h = 0; h < kMapSize; h++) {
          for(int w = 0; w < kMapSize; w++) {
              map[w][h] = [[mapString substringWithRange:NSMakeRange((h)+(w*kMapSize), 1)] intValue];
          }
      }
      
      // confirm whether the data is stored successfully
      for (int h = 0; h < kMapSize; h++) {
          for (int w = 0; w < kMapSize; w++) {
              NSLog(@"%d", map[w][h]);
          }
      }
      
      //初始数据
      NSInteger kMapSize=3;
      
      字符映射[3][3];发生了什么而不是你期望的?运行时异常?编译错误?结果数据不正确?BSOD?猪飞?靠水果经营?通常,解决编程问题的关键在于某些“不起作用”的具体细节。您是否询问如何标记NSString中的每个值,并在多数组中使用这些值?出现运行时错误,表示带范围的子字符串正在尝试获取不在其中的数据。我觉得非常愚蠢,但是的,字符串短于256个字符