【问题标题】:iOS 8 long is not work for NSMakeRange()iOS 8 long 不适用于 NSMakeRange()
【发布时间】:2014-10-14 10:44:12
【问题描述】:

不能在 64 位应用程序中使用 int。现在尝试使用long。但它在 NSMakeRange 中不起作用

long i;
for (long i = 0;i<4;i++){     
    NSLog(@"range:--- %ld",i);

    range.location= i; //possibly crash here
    subStr =[str substringWithRange:range];
}

错误信息:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFString substringWithRange:]: Range {1, 1} out of bounds; string length 1' 

【问题讨论】:

  • 你能发布错误信息吗?范围或索引是否超出范围?试试这个stackoverflow.com/questions/11131472/…
  • *** 由于未捕获的异常 'NSRangeException' 导致应用程序终止,原因:'-[__NSCFString substringWithRange:]: Range {1, 1} out of bounds;字符串长度 1'
  • 使用 NSInteger 而不是 long 来正确支持 64 位。您的崩溃是由于尝试对小于您指定范围的字符串进行子串化造成的。

标签: ios ios8


【解决方案1】:

您的崩溃与您使用long 无关。这是因为你的字符串只有 1 个字符长,所以整个字符串的范围是 {0, 1}。

【讨论】:

    【解决方案2】:

    将 long 值转换为我想要的格式是错误的。

    假设,我有一个数字 4。它只有一位数。 但是当我将其转换为 NSString 时,我需要 0004。但我要转换 str。

    现在我解决了: NSString *str = [NSString stringWithFormat:@"%04lu", k];

    然后它工作正常。 :)

    谢谢大家。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 2014-11-16
      • 1970-01-01
      相关资源
      最近更新 更多