2012-06-14 4 views
0

Мне нужно, чтобы остановить пользователю предупреждение, если он/она вставить дублирующиеся записи:IOS дублировать запись Не разрешено

 
Column1 Column2 Column3 

(A   B   C) Allowed 

(B   A   L) Allowed 

(A   B   C) Not Allowed because its duplicated records 
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
    NSManagedObjectContext *context = [appDelegate managedObjectContext]; 
    NSManagedObject *newAdds; 
    newAdds = [NSEntityDescription insertNewObjectForEntityForName:@"Matches" inManagedObjectContext:context]; 


    [newAdds setValue:club01.text forKey:@"club01"]; 
    [newAdds setValue:club02.text forKey:@"club02"]; 
    [newAdds setValue:matchDateVar forKey:@"matchDate"]; 


    [newAdds setValue:matchTaypVar forKey:@"matchType"]; 

ответ

6

Вы, вероятно, нужно осуществить проверку так:

NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName: @"Matches"]; 
fetchRequest.predicate = [NSPredicate predicateWithFormat: @"club01 == %@ AND club02 == %@ AND matchDate == %@", club01.text, club02.text, matchDateVar]; 
fetchRequest.fetchLimit = 1; 

NSError* error = nil; 
NSArray* tuples = [context executeFetchRequest: fetchRequest error: &error]; 
if (tuples.count > 0) 
{ 
    // OOPS ! Entity already exists 
} 

Производительность, вы можете добавить индекс для club01, club02, matchDate. Это очень поможет.

Edit: вы также можете использовать:

NSUInteger count = [context countForFetchRequest: fetchRequest error: &error]; 

вместо executeFetchRequest. Лучше даже.

-1

сейчас все в порядке. Проблема заключается в том, что дата/время не может быть дублировано, потому что секунды.

thanx :)

Смежные вопросы