【问题标题】:iOS Get all NSArray into oneiOS 将所有 NSArray 合二为一
【发布时间】:2016-10-12 17:12:37
【问题描述】:

我有 NSArray 和 NSArray。我想将所有 NSArray 合二为一。

我认为有一个简单的功能可以使用,不是吗?

这是我收到的:

(
        (
        n0eGi1KJWq,
        KHGeW32548,
    ),
        (
        n0eGi1KJWq
    )
)

我想得到:

(
        n0eGi1KJWq,
        KHGeW32548,
        n0eGi1KJWq
)

【问题讨论】:

  • 你要找的函数是flatMap
  • @keithbhunter 谢谢伙计,但我使用的是 Objective-C

标签: ios objective-c nsmutablearray nsarray


【解决方案1】:

一个简单的循环可以用来创建一个新数组:

NSArray *mainArray = ... // the array containing the other arrays
NSMutableArray *finalArray = [NSMutableArray array];
for (NSArray *innerArray in mainArray) {
    [finalArray addObjectsFromArray:innerArray];
}

此时finalArray 将拥有所有其他数组中的所有对象。

【讨论】:

    【解决方案2】:

    您也可以为此使用@unionOfArrays

    NSArray *flatArray = [array valueForKeyPath: @"@unionOfArrays.self"]; 
    

    如果您需要更深的展平(对于三维数组),请使用两次:

    NSArray *flatArray = [array valueForKeyPath: @"@unionOfArrays.self.@unionOfArrays.self"];
    

    【讨论】:

    • 不错,但不是真正的动态:/
    • “动态”是什么意思?这与根数组中的数组数量无关,而与深度有关。第二个例子是数组数组的数组;)
    • 哦,好吧!酷?
    • 它只是比公认的解决方案短一点,但它完全一样:)
    • 我没看懂,但是你说得对,简单易行!
    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    相关资源
    最近更新 更多