submittedTestArray = [{
scheduledTestId = "F7F15169-2FB6-4E47-A971-BAAD40D152AB";
studentId = "8b3df16f-ff2f-4ad4-839c-6a937b79854d";
submittedTestId = "37F20871-FB3A-47AA-B254-9E5409C5E4C4";
}, {
scheduledTestId = "440947DD-0A01-4DB8-8DD5-CCFA8F852FD3";
studentId = "8b3df16f-ff2f-4ad4-839c-6a937b79854d";
submittedTestId = "681689DC-B35C-491C-A737-AB19D9116FD9";
}, {
scheduledTestId = "440947DD-0A01-4DB8-8DD5-CCFA8F852FD3";
studentId = "8b3df16f-ff2f-4ad4-839c-6a937b79854d";
submittedTestId = "681689DC-B35C-491C-A737-AB19D9116FD9";
}, {
scheduledTestId = "440947DD-0A01-4DB8-8DD5-CCFA8F852FD3";
studentId = "e18ead0a-d0fc-4e15-96ee-ecbd32880d97";
submittedTestId = "A46965C6-14B1-401E-97C5-AD5BADCC02EE";
}]
我希望所有NSDictionary对象都基于 scheduledTestId
如果我将考虑上面的例子,那么它将给我两个NSDictionary对象。
暂时我正在使用以下代码。
NSMutableArray *uniqueKeys = [NSMutableArray arrayWithArray:[submittedTestArray valueForKeyPath:@"@distinctUnionOfObjects.scheduledTestId"]];
NSMutableArray *submittedTestUniqueArray = [[NSMutableArray alloc] initWithCapacity:uniqueKeys.count];
for (SubmittedTest *submittedTest in submittedTestArray) {
if ([uniqueKeys containsObject:submittedTest.scheduledTestId ]) {
[uniqueKeys removeObject:submittedTest.scheduledTestId];
[submittedTestUniqueArray addObject:submittedTest];
}
}
submittedTestUniqueArray 包含我想要的输出,即
[{
scheduledTestId = "F7F15169-2FB6-4E47-A971-BAAD40D152AB";
studentId = "8b3df16f-ff2f-4ad4-839c-6a937b79854d";
submittedTestId = "37F20871-FB3A-47AA-B254-9E5409C5E4C4";
}, {
scheduledTestId = "440947DD-0A01-4DB8-8DD5-CCFA8F852FD3";
studentId = "8b3df16f-ff2f-4ad4-839c-6a937b79854d";
submittedTestId = "681689DC-B35C-491C-A737-AB19D9116FD9";
}]
答案 0 :(得分:0)
而不是for-in循环,使用for循环并在每次迭代之后
if ([uniqueKeys containsObject:submittedTest.scheduledTestId ]) {
[uniqueKeys removeObject:submittedTest.scheduledTestId];
}
else
{
[submittedTestArray removeObjectAtIndex:currentIndex];
}
答案 1 :(得分:0)
我不知道我写的是什么,但我仍然敢于回答。
理想情况下,您尝试过的是完美的。要从字典中删除重复记录,在这种情况下需要有一堆记录 一个名为 uniqueKeys 且带有 scheduledTestId 值的数组,用于将每个字典元素与所有其他元素进行比较以进行复制。
这就是你所做的。
我可以在此代码中建议的唯一改进是NSMutableArray *uniqueKeys
将其更改为NSArray *uniqueKeys;
并在完成比较后&使用唯一记录收集字典对象,刷新数组元素,而不是逐个删除它们。
因此,简而言之,我在代码中找不到任何性能改进。
@ALL:如果我的技术知识有任何改进,请告诉我。
CHEERS HAPPY CODING