将 NSString 的 NSArray 转换为 NSMutableString 的 NSArray

发布于 2024-12-15 22:49:35 字数 37 浏览 1 评论 0原文

如何做到这一点而不必使用“for”循环“滚动”整个给定数组?

How to do that without having to "scroll" the entire given array with a "for" loop?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

塔塔猫 2024-12-22 22:49:35

我能想到的最好的办法是:

NSMutableArray *replacementArray = [NSMutableArray array];

[originalArray enumerateObjectsUsingBlock:
     ^(id obj, NSUInteger index, BOOL *stop)
     {
          [replacementArray addObject:[[obj mutableCopy] autorelease]];
     }
];

这或多或少只是告诉originalArray为您构建for循环。如果有什么不同的话,那就是比以下更多的工作:

NSMutableArray *replacementArray = [NSMutableArray array];

for(id obj in originalArray)
   [replacementArray addObject:[[obj mutableCopy] autorelease]];

The best I can come up with is:

NSMutableArray *replacementArray = [NSMutableArray array];

[originalArray enumerateObjectsUsingBlock:
     ^(id obj, NSUInteger index, BOOL *stop)
     {
          [replacementArray addObject:[[obj mutableCopy] autorelease]];
     }
];

Which more or less just tells the originalArray to construct the for loop for you. And if anything it's more work than:

NSMutableArray *replacementArray = [NSMutableArray array];

for(id obj in originalArray)
   [replacementArray addObject:[[obj mutableCopy] autorelease]];
<逆流佳人身旁 2024-12-22 22:49:35

因为似乎没有人同意我的评论,即这是 将 NSNumbers 的 NSArray 转换为 NSStrings 数组的更好方法,这里又是相同的答案:

NSArray * arrayOfMutableStrings = [arrayOfStrings valueForKey:@"mutableCopy"];

来自

valueForKey:
返回一个包含调用结果的数组
valueForKey: 在数组的每个对象上使用 key

- (id)valueForKey:(NSString *)key

参数
key 要检索的密钥。

返回值
检索到的密钥的值。

讨论
返回的数组包含每个返回 nil 的对象的 NSNull 元素。

Since nobody seems to agree with my comment that this is a duplicate of Better way to convert NSArray of NSNumbers to array of NSStrings, here's the same answer again:

NSArray * arrayOfMutableStrings = [arrayOfStrings valueForKey:@"mutableCopy"];

From the docs:

valueForKey:
Returns an array containing the results of invoking
valueForKey: using key on each of the array's objects.

- (id)valueForKey:(NSString *)key

Parameters
key The key to retrieve.

Return Value
The value of the retrieved key.

Discussion
The returned array contains NSNull elements for each object that returns nil.

ˉ厌 2024-12-22 22:49:35

我在 NSArray 上编写了一个字典方法,以便能够编写更清晰的函数代码

-(NSArray *)arrayByPerformingBlock:(id (^)(id))performBlock 
{
    NSMutableArray *array = [NSMutableArray array];
    for (id element in self)
         [array addObject:performBlock(element)];
    return [NSArray arrayWithArray:array];
}

用法:

arrayWithStrings = [arrayWithStrings arrayByPerformingBlock:^id(id element) {return [[element mutableCopy] autorelease];}];

这受到我从 Python 中了解的列表理解的启发。我还通过测试编写了该方法的版本。请参阅我的 arraytools

I wrote a dictionary method on NSArray to be able to write cleaner functional code

-(NSArray *)arrayByPerformingBlock:(id (^)(id))performBlock 
{
    NSMutableArray *array = [NSMutableArray array];
    for (id element in self)
         [array addObject:performBlock(element)];
    return [NSArray arrayWithArray:array];
}

usage:

arrayWithStrings = [arrayWithStrings arrayByPerformingBlock:^id(id element) {return [[element mutableCopy] autorelease];}];

This was inspired by list comprehensions I know from Python. I also wrote versions of this methods with testing. See my arraytools.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文