提问人:CokePokes 提问时间:3/25/2021 更新时间:3/26/2021 访问量:118
如何从 NSArray 将字符串配对在一起?[复制]
How to pair strings together from NSArray? [duplicate]
问:
我有一个看起来像这样的 NSArray:
NSArray *array = {@"1.100.2", @"23465343", @"1.100.1", @"46535334", @"1.0.03", @"24353454" ...};
我需要将每 2 个字符串配对到数组中的数组中,如下所示:
NSArray *pairedArray = {{@"1.100.2", @"23465343"}, {@"1.100.1", @"46535334"}, {@"1.0.03", @"24353454"}, ...};
数组是动态的。
我想有一个语句我可以使用,但记不住了。类似的东西for
for (uint i = 0; i < len - 1; i += 2)
任何帮助将不胜感激。
答:
1赞
skaak
3/26/2021
#1
这是通过使用数组的迭代器并大量使用 .arrayWithCapacity
NSArray *array = @[ @"1.100.2", @"23465343", @"1.100.1", @"46535334", @"1.0.03", @"24353454" ];
NSUInteger countPerPair = 2;
NSMutableArray * pair = [NSMutableArray arrayWithCapacity:countPerPair];
NSMutableArray * pairedArray = [NSMutableArray arrayWithCapacity:( array.count + countPerPair / 2 ) / countPerPair];
for ( NSObject * i in array )
{
if ( pair.count == countPerPair )
{
[pairedArray addObject:pair];
pair = [NSMutableArray arrayWithCapacity:countPerPair];
}
[pair addObject:i];
}
if ( pair.count )
{
[pairedArray addObject:pair];
}
评论
0赞
CokePokes
3/26/2021
虽然这确实有效,但我看到一些对被交换了。例如:NSArray *pairedArray = {{@“1.100.2”, @“23465343”}, {@“46535334”, @“1.100.1”}, {@“1.0.03”, @“24353454”}, ...};编辑:看起来他们每隔一对就交换一次顺序。
0赞
skaak
3/26/2021
@CokePokes哎呀!该代码中存在一个严重的错误。我已经修好了,现在应该更好了。
1赞
CokePokes
3/27/2021
是的,有效!谢谢伙计。标记为已解决!
0赞
bbum
3/27/2021
并不是说性能对于这么小的数据集真的很重要,但我倾向于避免使用可变数组。一次性创建所有子阵列作为 NSArray 实例既速度稍快,也更安全。如果数据模型是不可变的,则存储对象应该是可变的。
0赞
skaak
3/27/2021
@bbum你的意思是创建像这样的东西对?我确实考虑过这一点,但是您必须与 2 配对 - 我专门将我的设置为可变的,这意味着您需要可变的。不知道你的意思,但很好奇?你能解释一下吗?[NSArray arrayWithObjects:a,b,nil]
Creating the sub-arrays all at once as NSArray instances
评论