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

时间:2018-05-17 11:20:11

标签: ios swift3

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

我在这里发布主词典。

{
    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;
}

我在这里发布新词典。

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;

    };
}

但我不知道,请帮我找到解决方案。

在这里,我发布了我正在尝试的代码。

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)
                                }
                            }
                        }
                    }
                }
            }
        }

}

1 个答案:

答案 0 :(得分:2)

从现有字典中获取值,将新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环境来测试它,因为它很老但它可以工作或帮助你。您不需要将一个键添加到另一个字典中。