iphone - 有没有一种从数组中获取 float 的简写方法?

标签 iphone objective-c ios arrays boxing

我是使用 Objective C 进行 iPhone 开发的初学者,我发现我经常做的一件事是让 float (和整数)进出各种 NSArrays

float myFloatValue = [(NSNumber *)[myArray objectAtIndex:integerSelector] floatValue];

我知道我需要进行此装箱,因为 float (或整数)不是指针,而 NSArray 只接受指针。

我只是想知道是否有一点语法糖来缩短这行代码 - 主要是因为当我有几个数组并且我正在遍历它们进行一些处理时我发现这些行开始变得越来越巨大的,我必须打破从数组中提取数字的行只是为了使代码可读 - 然后我有很多笨拙的行,这些行往往会使逻辑更难理解。

在像 C# 这样的语言中,我会写这样的东西

float myResult = myArray[i] + someOtherArray[i+1];

(好的 - 这可能是一行非常愚蠢的代码 - 但从语法上讲它很干净,我猜是因为 .net 在我看不到的地方隐式地进行了装箱)

在 Objective-C 中,我发现自己在写:

float myFloatValue = [(NSNumber *)[myArray objectAtIndex:i] floatValue];
float myOtherFloatValue = [(NSNumber *)[someOtherArray objectAtIndex:i+1] floatValue];

float myResult = myFloatValue + myOtherFloatValue;

我只是想知道我是否错过了通过全手输入的技巧。我应该使用 NSArray 的替代品吗?有没有装箱/拆箱的快捷方式?

或者我想,我应该习惯它并停止提示 ;)

最佳答案

您可以创建一个类别:

@class NSArray (FloatHelper)

- (float) floatAtIndex:(NSUInteger)i;

@end

@implementation NSArray (FloatHelper)

 - (float) floatAtIndex:(NSUInteger)i {
   return [[self objectAtIndex:i] floatValue];
 }

@end

(未经测试且没有错误处理,这显然不是一个好主意。)

那么它可以像下面这样使用:

float a = [array floatAtIndex:1];

关于iphone - 有没有一种从数组中获取 float 的简写方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8971800/

相关文章:

iphone - 如果我只想发送 Beta 测试,我必须将 TestFlight SDK 包含到我的应用程序中吗?

ios - 如何检测 UIPageViewController 到达最后一页

objective-c - ios sdk 一次只能更改一个 View 的错误

ios - 为什么我的 UIView 加载不出来?

基于最大倾斜度的 iOS 设备屏幕磁性方向?

ios - iOS 中的 MVVM 模型

iphone - 使用 core-plot ios sdk 是否可以绘制内圆

ios - 使用 IQKeyboardReturnKeyHandler 在键盘上方显示 uitextfield

iphone - Facebook Connect iPhone 自定义发布流

objective-c - 在 NSTableView 周围填充