【问题标题】:Trying to remove a decimal from NSString试图从 NSString 中删除小数点
【发布时间】:2011-07-21 13:34:54
【问题描述】:

这很奇怪。

为 iPhone 开发我有一个 NSString:

 distanceFromTargetString = @"6178266.000000"
 // this is not actually code, but a value taken from elsewhere. It is a proper NSString though. 

当我使用这个时

NSArray *listItems = [distanceFromTargetString componentsSeparatedByString:@"."];
distanceFromTargetString = [listItems objectAtIndex:0];

或者这个

 [distanceFromTarget setText: distanceFromTargetString];

我得到了这样的东西

-[NSDecimalNumber isEqualToString:]: unrecognized selector sent to instance 0x1cac40
2011-07-21 14:29:24.226 AssassinBeta[7230:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSDecimalNumber isEqualToString:]: unrecognized selector sent to instance 0x1cac40'

有什么想法吗?

【问题讨论】:

  • 你试过[distanceFromTargetString integerValue] 吗?
  • 谢谢文斯。那有什么作用?
  • 我认为你在正确的轨道上,但这种方法不起作用。无论如何尝试将其发布为答案:)

标签: objective-c cocoa-touch nsstring


【解决方案1】:

在某些时候,您将NSDecimalNumber 分配给distanceFromTargetString,而不是NSString。 Objective C 中没有运行时类型检查,所以这完全是“合法的”:

NSDecimalNumber *number = [NSDecimalNumber ....];
[array addObject:number];
NSString *string = [array lastObject];

在您尝试将NSString 方法发送到string 之前,上述内容不会产生错误或警告,此时您将收到如上所示的异常(崩溃)。

对您分配distanceFromTargetString 的所有位置以及您使用NSDecimalNumber 的所有位置进行审核。您正在穿越溪流的某个地方。

【讨论】:

    【解决方案2】:

    你可以试试:

    NSInteger i = [distanceFromTargetString integerValue];
    NSString s = [NSString stringWithFormat:@"%d", i];
    // you got your string
    

    【讨论】:

      【解决方案3】:

      您正在某处呼叫isEqualToString,并以NSDecimalNumber 作为接收者。 distanceFromTarget 是什么?这是NSDecimalNumber 吗?

      第一件事应该起作用。

      【讨论】:

      • distanceFromTarget 是一个 UILabel
      【解决方案4】:

      你可以尝试在该行设置断点

      [distanceFromTarget setText: distanceFromTargetString];
      

      看看 distanceFromTargetString 是否真的是一个NSString

      如上所述,不知何故有一个NSNumber 潜入了某处。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-03
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        • 1970-01-01
        • 2011-01-08
        相关资源
        最近更新 更多