iOS: 如何将 NSMutableDictionary 添加到 swift 中 NSMutableArray 的特定索引?

iOS: How to add NSMutableDictionary to particular index of NSMutableArray in swift?

我现有的项目是swift2的人开发的,我有两个NSMutableArrays和一个NSDictionarys的集合,NSArray的名字是array1和array2。这是我的问题,如何将特定索引字典从 array2 添加到 array1 中的特定索引作为字典。

这里我post主词典。

{
    AccountNumber = "2004-001-014";
    City = "CANOGA PARK";
    FIPS = 6037;
    InspectionId = 228;
    InspectionLogId = 169;
    InspectionType = "Property Owner";
    InspectionTypeId = 1;
    LandUseCode = 1001;
    ScheduledDate = "2018-02-15T00:00:00";
    State = CA;
    Status = Completed;
    StatusId = 3;
    StreetName = MAYNARD;
    StreetNumber = 8312;
    TemplateId = 1090;
    TemplateName = "Casualty Loss Inspection";
    UserId = 72;
    UserPropertyId = 1380;
    XCoordinate = "34.2197";
    YCoordinate = "-118.6214";
    Zip = 91304;
}

这里我post新词典。

LandUseCode = 101;
ScheduledDate = "2018-01-21T00:00:00";
State = CA;
Status = Done;
StatusId = 2;
StreetName = MAYNARD;
StreetNumber = 8312;
TemplateId = 1090;

这是现在要制作的格式

{
    AccountNumber = "2004-001-014";
    City = "CANOGA PARK";
    FIPS = 6037;
    InspectionId = 228;
    InspectionLogId = 169;
    InspectionType = "Property Owner";
    InspectionTypeId = 1;
    LandUseCode = 1001;
    ScheduledDate = "2018-02-15T00:00:00";
    State = CA;
    Status = Completed;
    StatusId = 3;
    StreetName = MAYNARD;
    StreetNumber = 8312;
    TemplateId = 1090;
    TemplateName = "Casualty Loss Inspection";
    UserId = 72;
    UserPropertyId = 1380;
    XCoordinate = "34.2197";
    YCoordinate = "-118.6214";
    Zip = 91304;
    newlyadded =         {
        LandUseCode = 101;
        ScheduledDate = "2018-01-21T00:00:00";
        State = CA;
        Status = Done;
        StatusId = 2;
        StreetName = MAYNARD;
        StreetNumber = 8312;
        TemplateId = 1090;

    };
}

但我不知道。

我在这里 post 我正在尝试的代码。

func mergeOrderAndOpenOrderArrayData() {
        for k in 0..<(logOrderMutArray.count) {
            for j in 0..<self.openOrderArray.count {
                if let logOrderfips:NSNumber = (logOrderMutArray[k] as AnyObject).value(forKey: "FIPS") as? NSNumber {
                    if let openOrderfips:NSNumber = (openOrderArray[j] as AnyObject).value(forKey: "FIPS") as? NSNumber {
                        if let logOrderAccNum:String = (logOrderMutArray[k] as AnyObject).value(forKey: "AccountNumber") as? String {
                            if let openOrderAccNum:String = (openOrderArray[j] as AnyObject).value(forKey: "AccountNumber") as? String {
                                if logOrderfips == openOrderfips && logOrderAccNum == openOrderAccNum {
                                    print("Same")
                                    let PropertyMutableDict = NSMutableDictionary()
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "AccountNumber"), forKey: "AccountNumber")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "FIPS"), forKey: "FIPS")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "City"), forKey: "City")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "InspectionId"), forKey: "InspectionId")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "InspectionLogId"), forKey: "InspectionLogId")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "InspectionType"), forKey: "InspectionType")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "InspectionTypeId"), forKey: "InspectionTypeId")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "LandUseCode"), forKey: "LandUseCode")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "ScheduledDate"), forKey: "ScheduledDate")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "State"), forKey: "State")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "Status"), forKey: "Status")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "StatusId"), forKey: "StatusId")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "StreetName"), forKey: "StreetName")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "StreetNumber"), forKey: "StreetNumber")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "TemplateId"), forKey: "TemplateId")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "TemplateName"), forKey: "TemplateName")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "UserId"), forKey: "UserId")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "UserPropertyId"), forKey: "UserPropertyId")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "XCoordinate"), forKey: "XCoordinate")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "YCoordinate"), forKey: "YCoordinate")
                                    PropertyMutableDict.setValue((openOrderArray[j] as AnyObject).value(forKey: "Zip"), forKey: "Zip")
                                    validatePropertyMutableDict.setValue(PropertyMutableDict, forKey: "validateproperty")
                                    print("validatePropertyMutableDict is", validatePropertyMutableDict)
                                    validatePropertyMutArray.insert(validatePropertyMutableDict, at: k)
                                    print(logOrderMutArray)
                                }
                            }
                        }
                    }
                }
            }
        }
}

从现有字典中获取值,将新的 dictionary 添加到其中并将其放回原来的位置。

var dictMutableCopy = (array1[index] as! NSDictionary).mutableCopy as! NSMutableDictionary
let newDict = array2[index] as! NSDictionary
dictMutableCopy["newlyAdded"] = newDict
/// Or use below line if you want to merge both dictionaries
/// dictMutableCopy.addEntries(from: <#T##[AnyHashable : Any]#>)

array1[index] = dictMutableCopy

我没有 Swift 2.0 环境来测试它,因为它很旧,但它可以工作或帮助你。你不需要一个一个地添加到另一个字典中。