удаление coredata из базы данных и создание запроса - PullRequest
0 голосов
/ 10 февраля 2011

Привет, я немного новичок с основными данными, поэтому я прошу вашего ответа, я могу извлечь данные из базы данных с помощью следующих функций:

NSManagedObject *selectedObject = [[self fetchedResultsController]
    objectAtIndexPath:indexPath];
[[selectedObject valueForKey:@"SOMECOLLUMNNAME"] description];

Но у меня действительно большие проблемы с удалением из базы данных. Я прочитал, что должен использовать NSPredicate. Я прочитал учебник , но не понимаю, как написать простое

DELETE *
FROM Table t
WHERE t.date == 01.01.2011

например.

Можете ли вы помочь мне, пожалуйста

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

Хм. Я предполагаю, что объект даты - NSString, а не NSDate.

Попробуйте это:

...// your code

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"date == %@", @"01.01.2011"];

[request setPredicate:predicate];

// Execute the fetch -- create a mutable copy of the result.

NSError * error = nil;

NSMutableArray * mutableFetchResults = [[yourManagedObjectContext executeFetchRequest:request error:&error] mutableCopy];

for (int i = 0; i < [mutableFetchResults count]; i++)

{

   YourEntity * object = (YourEntity*)[mutableFetchResults objectAtIndex:i];

   [yourManagedObjectContext deleteObject:object];

}  

[mutableFetchResults release];

Просьба спросить, нужна ли вам дополнительная помощь.

0 голосов
/ 10 февраля 2011

Большое спасибо, Элиас

Вот мой почти окончательный код:

-(void)deleteLastDate{
    NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:0];
    NSString *startDate=[[NSString alloc]initWithString:@"01.01.2011"];//[[managedObject valueForKey:@"date"] description]];

    NSManagedObjectContext *moc = [self.fetchedResultsController managedObjectContext];
    NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date == %@)", startDate];
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    [request setEntity:[NSEntityDescription entityForName:[entity name] inManagedObjectContext:moc]];
    [request setPredicate:predicate];

    NSError *error = nil;
    NSArray *results = [moc executeFetchRequest:request error:&error];
    int aegedInt = [results count];
    for (int i = 0; i<aegedInt; i++) {
        [moc deleteObject:[results objectAtIndex:i]]; 
    }
}

Надеюсь, это поможет людям, занимающимся той же проблемой

Еще раз спасибоЭлиас

...