Я новичок в iOS, и перед вами стоит проблема сравнения двух массивов. Я попробовал этот кодКак сравнить два динамических массива без использования цели цикла c
if ([arr1 isEqualToArray:arr2])
{
NSLog(@"Print the output to update...");
}
Но это не работает для me.Because мой массив как этот
arr1=[@"1",@"2",@"3",@"4",@"5",@"6"];
arr2=[@"2"];
Итак, я попробовал код, как этот
NSSet *set1 = [NSSet setWithArray:arr1];
NSSet *set2 = [NSSet setWithArray:arr2];
if ([set1 isEqualToSet:set2]) {
// equal
}
Но, это не работайте для меня. В моем случае arr1 - из веб-сервиса, а arr2 - из основных данных. Вы можете предложить любое другое предложение сравнить этот два массива.
В случае условие я обновляю свой код и другое условие в час вставив
if([arr1 isEqualToArray:arr2])
{
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:context]];
NSError *error = nil;
NSArray *results = [context executeFetchRequest:request error:&error];
NSManagedObject* favoritsGrabbed = [results objectAtIndex:0];
[favoritsGrabbed setValue:@"1" forKey:@"Key"];
// Save the object to persistent store
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
}
else
{
if (self.device) {
// Update existing device
[device setValue:Audit forKey:@"key1"];
[device setValue:MethodID forKey:@"key2"];
[device setValue:CheckPointID forKey:@"key3"];
[device setValue:GlobalStringChk forKey:@"key4"];
[device setValue:RegionID forKey:@"key5"];
[device setValue:BranchID forKey:@"key6"];
[device setValue:SiteID forKey:@"key7"];
[device setValue:AuID forKey:@"key8"];
[device setValue:userid forKey:@"key9"];
[device setValue:StringIndex forKey:@"key10"];
} else {
// Create a new device
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"EntityName" inManagedObjectContext:context];
[newDevice setValue:Audit forKey:@"key1"];
[newDevice setValue:MethodID forKey:@"key2"];
[newDevice setValue:CheckPointID forKey:@"key3"];
[newDevice setValue:GlobalStringChk forKey:@"key4"];
[newDevice setValue:RegionID forKey:@"key5"];
[newDevice setValue:BranchID forKey:@"key6"];
[newDevice setValue:SiteID forKey:@"key7"];
[newDevice setValue:AuID forKey:@"key8"];
[newDevice setValue:userid forKey:@"key9"];
[newDevice setValue:StringIndex forKey:@"key10"];
}
}
Слышь, мне нужно сравнить массив, так что я могу обновить значение в основных данных и, если массив не равны, то Мне нужно вставить их. Так что я не могу использовать loop.Please см. Его else условие, если я использовал цикл, он вставляет данные до тех пор, пока цикл не будет запущен, и я хочу вставить одно значение при щелчке. Так что я не могу использовать loop.
Что вы сравниваете, нет равных элементов в обоих массивах? – vaibhav
@vaibhav Нет, не сравнивая сравнение, содержащее его значение или нет? – Muju
просто вы можете сделать это, используя цикл, будь то подсчет или такое же значение. – vaibhav