首页 > 解决方案 > 如何在 NSMutableArray 中对对象进行分组并在 Objective-C 中划分为单独的 NSMutableArray

问题描述

我有这样的 NSMutableArray:

// NSMutableArray *Data = (NSMUtableArray(NSDictionary))
       Data = {"Device": "A1", "Temperature": "25", "datetime": "2013.02.03"},
       {"Device": "A2", "Temperature": "25", "datetime": "2013.02.03"},         
       {"Device": "A3", "Temperature": "25", "datetime": "2013.02.03"},        
       {"Device": "A1", "Temperature": "25", "datetime": "2013.02.04"},
       {"Device": "A2", "Temperature": "25", "datetime": "2013.02.04"}.

如何按照“日期时间”将其分解并分组为单独的 NSMutableArray。如上案例将分为:

Data_d1 = {"Device": "A1", "Temperature": "25", "datetime": "2013.02.03"},
          {"Device": "A2", "Temperature": "25", "datetime": "2013.02.03"},
          {"Device": "A3", "Temperature": "25", "datetime": "2013.02.03"}

Data_d2 = {"Device": "A1", "Temperature": "25", "datetime": "2013.02.04"},
          {"Device": "A2", "Temperature": "25", "datetime": "2013.02.04"}

标签: iosobjective-cmacosnsmutablearraynsarray

解决方案


您可以使用以下代码实现它:

let data:[[String: String]] = [
        ["Device": "A1",
         "Temperature": "25",
         "datetime": "2013.02.03"],

        ["Device": "A2",
         "Temperature": "25",
         "datetime": "2013.02.03"],

        ["Device": "A3",
         "Temperature": "25",
         "datetime": "2013.02.03"],

        ["Device": "A1",
         "Temperature": "25",
         "datetime": "2013.02.04"],

        ["Device": "A2",
         "Temperature": "25",
         "datetime": "2013.02.04"]]

    let dateTimeArray = data.compactMap({ $0["datetime"] })
    let uniqueDateTimeArray = Array(Set(dateTimeArray))

    var desiredSeparatedArray = [[[String: String]]]()
    for dateTime in uniqueDateTimeArray {
        var arrayForDateTime = [[String: String]]()
        for element in data {
            if element["datetime"] == dateTime {
                arrayForItem.append(element)
            }
        }
        desiredSeparatedArray.append(arrayForDateTime)
    }

最后desiredSeparatedArray就是答案!!


推荐阅读