2012-06-14 42 views
26

Làm cách nào để xóa đối tượng mà tôi đã thêm trước đó bằng mã này. Một phần yêu thích của nó, khi bắt đầu, tôi thêm một ngôi sao màu xám để thêm một đối tượng đến từ một lần tìm nạp. Sau đó, nó chuyển sang màu vàng và phương thức ngược lại phải là sao vàng = xóa.Xóa đối tượng trong Dữ liệu chính

Nhưng tôi không biết làm cách nào để thực hiện việc này.

Cảm ơn trước

-(IBAction)inFavoris:(id)sender { 



AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

NSManagedObjectContext *context = [appDelegate managedObjectContext]; 
NSManagedObject *favorisObj = [NSEntityDescription 
          insertNewObjectForEntityForName:@"Favoris" 
          inManagedObjectContext:context]; 


[favorisObj setValue:idTaxi forKey:@"idTaxi"]; 
[favorisObj setValue:nomTaxi forKey:@"nomTaxi"]; 
[favorisObj setValue:taxiCB forKey:@"cb"]; 
[favorisObj setValue:taxiAvion forKey:@"avion"]; 
[favorisObj setValue:taxiColis forKey:@"colis"]; 
[favorisObj setValue:taxiHandicape forKey:@"handicape"]; 
[favorisObj setValue:taxiHoraires forKey:@"horaire"]; 
[favorisObj setValue:lugagge forKey:@"lugagge"]; 
[favorisObj setValue:luxury forKey:@"luxury"]; 
[favorisObj setValue:languesParlees forKey:@"langues"]; 
[favorisObj setValue:taxiNote forKey:@"note"]; 
[favorisObj setValue:taxiPassengers forKey:@"passenger"]; 
[favorisObj setValue:taxiVote forKey:@"etoiles"]; 
[favorisObj setValue:taxiTel forKey:@"tel"]; 


[self.view addSubview:favorisB]; 

} 

Cập nhật

tôi đã thực hiện phương pháp này .. Nó được công việc làm :)

-(IBAction)outFavoris:(id)sender { 


AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
NSString *testEntityId = idTaxi; 
NSManagedObjectContext *moc2 = [appDelegate managedObjectContext]; 

NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; 
fetch.entity = [NSEntityDescription entityForName:@"Favoris" inManagedObjectContext:moc2]; 
fetch.predicate = [NSPredicate predicateWithFormat:@"idTaxi == %@", testEntityId]; 
NSArray *array = [moc2 executeFetchRequest:fetch error:nil]; 




for (NSManagedObject *managedObject in array) { 
    [moc2 deleteObject:managedObject]; 
} 


[self.view addSubview:favorisO]; 

} 
+0

bạn phải lưu managedObject cuối cùng để thực hiện thay đổi thành coredata –

Trả lời

60

của nó khá đơn giản :)

[context deleteObject:favorisObj]; 

Và vật thể xấu đã biến mất.

Cập nhật

Bạn sẽ chỉ cần đảo ngược nó với một cái gì đó như thế này nếu bạn cần một nút để xóa các đối tượng.

-(IBAction)removeFavoris:(id)sender { 

    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

    NSManagedObjectContext *context = [appDelegate managedObjectContext]; 

    [context deleteObject:favorisObj]; 
} 
+0

Ok, nhưng làm cách nào tôi có thể tạo phương pháp ngược lại so với ở trên? – Tidane

+0

Tôi phải khai báo favorisObj như trên ?? Nó vẫn không xóa bất cứ điều gì :( – Tidane

+0

Ở trên bạn đang tạo ra các favorisObj sau đó thêm công cụ vào nó.Bạn cần phải lấy cùng một đối tượng và vượt qua nó như là đối số để '[bối cảnh deleteObject: arg]' –

24

Đừng quên lưu ngữ cảnh sau khi bạn đã xóa NSManagedObject. Vì vậy, đây là mã chung;

NSManagedObjectContext * context = [self managedObjectContext]; 
[context deleteObject:objectToDelete]; 

NSError * error = nil; 
if (![context save:&error]) 
{ 
    NSLog(@"Error ! %@", error); 
} 

Trong trường hợp của bạn, cần có đoạn mã sau vòng lặp for.

for (NSManagedObject *managedObject in array) { 
    [moc2 deleteObject:managedObject]; 
} 
NSError * error = nil; 
if (![context save:&error]) 
{ 
    NSLog(@"Error ! %@", error); 
} 
Các vấn đề liên quan