如何在 Objective-C 中将 NSObject 除以一个数字



我有这个代码:

NSObject *distanceInMeters;
distanceInMeters = [[[[[[googleMapsApiResult objectForKey:@"routes"] objectAtIndex:0] objectForKey:@"legs"] objectAtIndex:0] objectForKey:@"distance"] valueForKey:@"value"];
NSLog(@"%@", distanceInMeters); // this outputs 7578
NSDecimalNumber *roundTripInKilometers;
roundTripInKilometers = distanceInMeters / 500; // It says "Invalid operands to binary expression ('NSObject *' and 'int')

我希望得到 15.156,但它不能用整数除以对象值。我应该怎么做才能获得 15.156?

你不能从 NSObject 中划分数字,要做同样的事情,你必须从中获取数字并在任何地方使用它

 NSNumber *distanceInMeters;
distanceInMeters = [[[[[[googleMapsApiResult objectForKey:@"routes"] objectAtIndex:0] objectForKey:@"legs"] objectAtIndex:0] objectForKey:@"distance"] valueForKey:@"value"];
NSLog(@"%@", distanceInMeters); // this outputs 7578
NSDecimalNumber *roundTripInKilometers = (NSDecimalNumber *)[NSDecimalNumber numberWithDouble:[distanceInMeters doubleValue] / 500.0];

你的代码中有很多问题。首先,您需要将从 API 获得的值转换为双精度值。一种简单的方法是首先将其转换为 NSString 的实例。然后使用方法 doubleValue 从字符串中获取双精度值。

接下来将该值除以 500:

double roundTripInKilometersDouble = distanceInMeters / 500.0;

然后将该结果放入NSDecimalNumber

NSDecimalNumber *roundTripInKilometers = [NSDecimalNumber numberWithDouble: roundTripInKilometersDouble];

(尚未测试此代码。

最新更新