我有N个字典&拥有包含对象的数组。 我需要迭代并检查Object的关键EmployeeID值是否存在于Object。在数组中说obj.empId与否。
字典如下所示
{
"Message":[
{
"EmpID": 3749,
"Dept": 10,
"EmployeeName": "John",
},
{
},
{
}]
} //so many dictionaries..not one
示例:我已经有一个包含10条记录的数组,表示obj.empID从1-10开始。从服务我得到10条记录说10个字典。在该密钥中,EmpID保持值5-15。
那么,我如何迭代循环以便识别使用不同的EmpID然后现有记录检索新记录。
这是我到目前为止所做的准则..
NSArray *responseArray=responseDict[@"Message"];
for (NSDictionary *dict in responseDict[@"Message"]) {
for (id key in responseDict) {
if ([key isEqualToString:@"EmpID"]) {
for (Employees *empObj in emparray)
{
BOOL isExists=YES;;
if (![empObj.empid isEqualToString:[responseDict objectForKey:key]]) {
isExists=NO;
break;
//here I need to do the logic..
}
}
}
}
}
但它不会得到准确的结果或逻辑也不正确..
请为上述任务或我出错的地方建议任何更好的解决方案..
任何想法或建议都表示赞赏..
谢谢..,
答案 0 :(得分:1)
如果不使用这么多循环,您可以按照以下代码检查记录是否存在。
NSArray *responseArray=responseDict[@"Message"];
for (Employees *empObj in emparray)
{
BOOL isExists=NO;
if ([[responseArray valueForKey:@"EmpID"]containsObject:empObj.empid]) {
isExists=YES;
NSLog(@"%@ EmpID Exist",empObj.empid);
//here I need to do the logic..
}else{
NSLog(@"%@ EmpID Not Exist",empObj.empid);
}
}
答案 1 :(得分:0)
不要使用迭代,聪明地编码,使用以下代码......
NSArray *responseArray=responseDict[@"Message"];
NSArray * empIdResponseArray = [responseArray valueForKeyPath:@"@unionOfObjects.EmpID"];
NSArray * empIdLocalArray = [emparray valueForKeyPath:@"@unionOfObjects.empid"];
NSMutableSet *empIdResponseSet = [NSMutableSet setWithArray: empIdResponseArray];
NSSet *empIdLocalSet = [NSSet setWithArray: empIdLocalArray];
[empIdResponseSet intersectSet: empIdLocalSet];
NSArray *commonElementArray = [empIdResponseSet allObjects];
NSMutableArray *newElementArray = [NSMutableArray arrayWithArray:empIdResponseArray];
[newElementArray removeObjectsInArray:commonElementArray];
for (int index = 0; index < newElementArray.count; index++)
{
NSMutableDictionary * dictEmp = [NSMutableDictionary dictionaryWithDictionary:[newElementArray objectAtIndex:index]];
NSLog(@"EMPLOYEE = %@",dictEmp);
// Add your Logic for new records only....
// Enjoy :)
}