Я пытаюсь определить, есть ли у меня повторяющаяся запись в CoreData, используя MagicalRecord. Для этого я сравниваю обновленные данные с первой существующей записью:
Это код, который я использую для поиска:
// set up predicate to find single appointment
if(selectedApptKey.length > 0) {
NSPredicate *predicate = ([NSPredicate predicateWithFormat:
@"((aApptKey == %@) && (aStartTime == %@) && (aEndTime == %@) && (aServiceTech == %@))",
selectedApptKey, tStartDate, tEndDate, tStaff]);
NSLog(@"\n\nselectedApptKey: %@\ntStartDate: %@\ntEndDate: %@\ntStaff: %@",selectedApptKey, tStartDate, tEndDate, tStaff);
ai = [AppointmentInfo MR_findFirstWithPredicate:predicate inContext:localContext];
if((ai.aApptKey == selectedApptKey) &&
(ai.aStartTime == tStartDate) &&
(ai.aEndTime == tEndDate) &&
(ai.aServiceTech == tStaff)) {
updateFlag = YES;
}
}
Это данные предиката, которые я использую для поиска существующей записи:
selectedApptKey: RolfMarsh3911 tStartDate: 2013-12-29 20:15:00 +0000 tEndDate: 2013-12-29 22:15:00 +0000 tStaff: Kellie
Это результирующая запись, полученная из приведенного выше кода:
Printing description of ai:
<NSManagedObject: 0xb705430> (entity: AppointmentInfo; id: 0xb7bca00 <x-coredata://649CD00C-3C88-4447-AA2B-60B792E3B25F/AppointmentInfo/p22> ; data: {
aApptKey = RolfMarsh3911;
aEndTime = "2013-12-29 22:15:00 +0000";
aImage = nil;
aNotes = "";
aPosH = 200;
aPosW = 214;
aPosX = 0;
aPosY = 231;
aServiceTech = Kellie;
aServices = "";
aStartTime = "2013-12-29 20:15:00 +0000";
client = nil;
})
Как видите, данные записи и поиска точны. Вопрос: почему оператор if терпит неудачу (для updateFlag не установлено значение YES)?
isEqualToDate
для NSDate,isEqualToString
для NSString и т. д. Мы не знаем, какого типа ваши переменные, поэтому... - person Larme   schedule 30.12.2013