Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将NSNumbers数组转换为NSString数组的更好方法_Objective C_Cocoa_Nsarray - Fatal编程技术网

Objective c 将NSNumbers数组转换为NSString数组的更好方法

Objective c 将NSNumbers数组转换为NSString数组的更好方法,objective-c,cocoa,nsarray,Objective C,Cocoa,Nsarray,我有一个由NSNumber组成的NSArray,我想通过获取第一个数组中每个NSNumber的stringValue,将其转换为NSStrings的NSArray 我想到的方法是迭代第一个数组中的每个值,获取其字符串值并将其添加到另一个数组中。但应该有一个更优雅的解决方案。您知道一个吗?NSArray以返回新数组的方式实现该方法。新数组包含向原始数组中的每个对象请求指定值的结果。在这种情况下,NSNumber有其stringValue,因此您所要做的就是: NSArray * b = [a va

我有一个由
NSNumber
组成的
NSArray
,我想通过获取第一个数组中每个
NSNumber
stringValue
,将其转换为
NSStrings
NSArray


我想到的方法是迭代第一个数组中的每个值,获取其字符串值并将其添加到另一个数组中。但应该有一个更优雅的解决方案。您知道一个吗?

NSArray
以返回新数组的方式实现该方法。新数组包含向原始数组中的每个对象请求指定值的结果。在这种情况下,
NSNumber
有其
stringValue
,因此您所要做的就是:

NSArray * b = [a valueForKey:@"stringValue"];

不过,简单的旧快速枚举(或
EnumerateObjectsSusingBlock:
)并不是一个糟糕的解决方案
NSArray
valueForKey:
实现很可能在内部使用
for
循环,这一点很容易被以后阅读它的人理解。

我认为您的解决方案是最优雅的:-)因为它简单明了如果您正在努力寻找一个比3行代码更好的解决方案,而不是性能最佳的解决方案,那你就有太多的空闲时间了。@morningstar::)我没有那么多时间实际上情况正好相反,但有时候框架提供了一些很棒的方法,你会后悔不知道它们。如果有的话,我想找出它们。哇,真的吗?它看起来确实滥用,但也很可怕。不滥用-在我看来相当惯用。stringValue是NSNumber类的一个有效属性,NSArray的valueForKey:有意设计为允许以这种方式转换数组。这正是我写这篇文章的方式,不管它值多少钱。老实说,我没想到它会这么写@jbat100@Chuck当前位置就我而言,你的意见很有价值。感谢您的确认。@morningstar:Key-Value编码比声明的属性早很多年。没有文件要求,甚至没有建议该值应为声明的属性。您提出的另一种情况确实是对KVC的滥用,但这是因为它违反了属性的语义。您可以对声明的属性执行相同的操作。