標籤:coredata
文中代碼均來源於:http://www.appcoda.com/introduction-to-core-data/
希望學習 Core Data 的同學不要錯過:)以下是我個人記錄的一些常用程式碼片段。
有一個 Entity:Device,有三個屬性:company、name、version。
1.擷取 context 的方法:
- (NSManagedObjectContext *)managedObjectContext { NSManagedObjectContext *context = nil; id delegate = [[UIApplication sharedApplication] delegate]; if ([delegate performSelector:@selector(managedObjectContext)]) { context = [delegate managedObjectContext]; } return context;}
2.增加一條資料:
NSManagedObjectContext *context = [self managedObjectContext]; // Create a new managed object NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Device" inManagedObjectContext:context]; [newDevice setValue:self.nameTextField.text forKey:@"name"]; [newDevice setValue:self.versionTextField.text forKey:@"version"]; [newDevice setValue:self.companyTextField.text forKey:@"company"]; NSError *error = nil; // Save the object to persistent store if (![context save:&error]) { NSLog(@"Can‘t Save! %@ %@", error, [error localizedDescription]); }
3.刪除一條資料:
NSManagedObjectContext *context = [self managedObjectContext];// Delete object from database[context deleteObject:[self.devices objectAtIndex:indexPath.row]];NSError *error = nil;if (![context save:&error]) { NSLog(@"Can‘t Delete! %@ %@", error, [error localizedDescription]); return;}
4.修改一條資料:
NSManagedObjectContext *context = [self managedObjectContext]; // Update existing device[self.device setValue:self.nameTextField.text forKey:@"name"];[self.device setValue:self.versionTextField.text forKey:@"version"];[self.device setValue:self.companyTextField.text forKey:@"company"];NSError *error = nil;// Save the object to persistent storeif (![context save:&error]) { NSLog(@"Can‘t Save! %@ %@", error, [error localizedDescription]);}
5. 查詢一堆資料:
// Fetch the devices from persistent data storeNSManagedObjectContext *managedObjectContext = [self managedObjectContext];NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Device"];self.devices = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
[iOS] Core Data 代碼速查表