在我现有的项目是由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)
}
}
}
}
}
}
}
}
答案 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
环境来测试它,因为它很老但它可以工作或帮助你。您不需要将一个键添加到另一个字典中。