Π ΠΈΡ. 16.11. ΠΡΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΡΠ±ΠΎΡΠΊΠΈ
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊΠΎ Π²ΡΠΎΡΠΎΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π²ΠΈΠ΄Π°, Π³Π΄Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Person Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ:
β (void) createNewPerson:(id)paramSender{
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext =
appDelegate.managedObjectContext;
Person *newPerson =
[NSEntityDescription insertNewObjectForEntityForName:@"Person"
inManagedObjectContext: managedObjectContext];
if (newPerson!= nil){
newPerson.firstName = self.textFieldFirstName.text;
newPerson.lastName = self.textFieldLastName.text;
newPerson.age = @([self.textFieldAge.text integerValue]);
NSError *savingError = nil;
if ([managedObjectContext save:&savingError]){
[self.navigationController popViewControllerAnimated: YES];
} else {
NSLog(@"Failed to save the managed object context.");
}
} else {
NSLog(@"Failed to create the new person object.");
}
}
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠΌΡ, ΡΠ°ΠΌΠΈΠ»ΠΈΡ ΠΈ Π²ΠΎΠ·ΡΠ°ΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΈΡ ΡΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Π²ΠΈΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡ. ΠΠ°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΊΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠ΅ΠΌΠΎΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°. ΠΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΠ΅ΡΠΎΠ΄ save:. ΠΠ½, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Π²ΠΈΠ΄Π° Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΡΠ±ΠΎΡΠΊΠΈ (ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π°Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ (ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ) Π²ΠΈΠ΄Π°:
β (void) tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath{
Person *personToDelete = [self.frc objectAtIndexPath: indexPath];
[[self managedObjectContext] deleteObject: personToDelete];
if ([personToDelete isDeleted]){
NSError *savingError = nil;
if ([[self managedObjectContext] save:&savingError]){
NSLog(@"Successfully deleted the object");
} else {
NSLog(@"Failed to save the context with error = %@", savingError);
}
}
}
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΡΠ±ΠΎΡΠΊΠΈ, Π½ΠΎ ΡΠ΄Π°Π»ΡΠ΅Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ°ΠΊΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ±ΠΎΡΠΊΠΈ, Π° ΡΡΠΎ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠ°Π±Π»ΠΈΡΠ½ΡΡ Π²ΠΈΠ΄Π°Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 4. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΊΠ°ΠΊ Π½Π° ΡΠΈΡ. 16.12.
Π ΠΈΡ. 16.12. Π’Π°Π±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΠΈΠ΄Π° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΆΠ΅ Π·Π΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΠΈΠ΄Π° Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΡΠ±ΠΎΡΠΊΠΈ
16.8. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ Π² Core Data
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ²ΡΠ·Π°ΡΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡ Person Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ Home, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
Π Core Data ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΈΠ΄Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ: Β«ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡΒ» (one-to-one), ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΎΠ΄ΠΈΠ½ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ» ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ». ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ.
β’ ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡΒ» β ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈ Π΅Π³ΠΎ Π½ΠΎΡΠΎΠΌ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π½ΠΎΡ, ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½ΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ.
ΠΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΎΠ΄ΠΈΠ½ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ» β ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠΌ ΠΈ Π΅Π³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ. Π£ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ, Π½ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ². Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡΒ», ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΎΠ΄ΠΈΠ½ (ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ) ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ (ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°ΠΌ)Β». ΠΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΊΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌ.
ΠΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ» β Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ. ΠΠ΄Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π»ΡΠ΄ΡΠΌΠΈ, Π° ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠΈ.
Π Core Data ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Β«ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡΒ», Π½ΠΎ Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°ΡΡ. ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡ ΠΊ Π½Π΅Π΄Π°Π²Π½Π΅ΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ Π½ΠΎΡΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ, ΡΠ΅ΠΉ Π½ΠΎΡ ΡΠΎΡΡΠΈΡ Ρ Π½Π΅Π³ΠΎ Π½Π° Π»ΠΈΡΠ΅, Π° Π²ΠΎΡ Π½ΠΎΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ, ΠΊΠΎΠΌΡ ΠΎΠ½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ Β«ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡΒ» ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ : ΠΎΠ±ΡΠ΅ΠΊΡ A ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ B Π±ΡΠ΄ΡΡ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π°Π½Ρ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡΒ». Π Core Data ΠΏΡΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Β«ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡΒ» ΠΎΠ±ΡΠ΅ΠΊΡ A Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ B, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΡΠ°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ Objective-C, Π²ΡΠ΅Π³Π΄Π° Π»ΡΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ. ΠΡΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Β«ΠΎΠ΄ΠΈΠ½ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ» ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½ Ρ ΡΡΠ΄ΠΎΠΌ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΏΠ° NSSet. Π₯ΠΎΡΡ ΠΏΡΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ Β«ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡΒ» ΠΎΠ±Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ Π² ΡΠ°ΠΊΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ , ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΡΡΠ»ΠΊΡ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° Β«Π½Π°ΠΏΠ°ΡΠ½ΠΈΠΊΠ°Β», ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ ΡΠΈΠΏΡ Β«ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡΒ», ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ°.
ΠΡΠ°ΠΊ, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΊΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π°Π½Π½ΡΡ , Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Β«ΠΎΠ΄ΠΈΠ½ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ».
1. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π² Xcode ΡΠ°ΠΉΠ» xcdatamodel, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Core Data. ΠΡΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ (ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 16.1).
2. ΠΡΠΊΡΠΎΠΉΡΠ΅ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΡΠ°ΠΉΠ» ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½ΡΡ , ΡΠ΅Π»ΠΊΠ½ΡΠ² Π½Π° Π½Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ.
3. Π£Π΄Π°Π»ΠΈΡΠ΅ Π²ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΡΠ°Π½Π΅Π΅ ΡΡΡΠ½ΠΎΡΡΠΈ, Π²ΡΠ΄Π΅Π»ΡΡ ΠΈΡ ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Ρ ΠΊΠ»Π°Π²ΠΈΡΡ Delete.
4. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ ΡΡΡΠ½ΠΎΡΡΡ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ Employee (Π‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊ). Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ ΡΡΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ firstName (ΡΠΈΠΏΠ° String), lastName (ΡΠΈΠΏΠ° String) ΠΈ age (ΡΠΈΠΏΠ° Integer 32) (ΡΠΈΡ. 16.13).
Π ΠΈΡ. 16.13. Π‘ΡΡΠ½ΠΎΡΡΡ Employee Ρ ΡΡΠ΅ΠΌΡ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ
5. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Manager (ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ) Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΈ Ρ ΡΡΡΠ½ΠΎΡΡΠΈ Employee: firstName (ΡΠΈΠΏΠ° String), lastName (ΡΠΈΠΏΠ° String) ΠΈ age (ΡΠΈΠΏΠ° Integer 32) (ΡΠΈΡ. 16.14).
Π ΠΈΡ. 16.14. Π‘ΡΡΠ½ΠΎΡΡΡ Manager Ρ ΡΡΠ΅ΠΌΡ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ
6. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΡΠ½ΠΎΡΡΠΈ Manager. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΡ ΡΡΡΠ½ΠΎΡΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°, Π° ΠΏΠΎΡΠΎΠΌ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ + Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Relationships (ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΡ) (ΡΠΈΡ. 16.15).
Π ΠΈΡ. 16.15. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΡΡΠ½ΠΎΡΡΠΈ Manager
7. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΠΉΡΠ΅ employees (Π‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΈ) (ΡΠΈΡ. 16.16).
Π ΠΈΡ. 16.16. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° Β«ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΊ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°ΠΌΒ»
8. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡΡΠ½ΠΎΡΡΡ Employee ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π»Ρ Π½Π΅Π΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅. ΠΠ°Π·ΠΎΠ²ΠΈΡΠ΅ ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ manager (ΡΠΈΡ. 16.17).
Π ΠΈΡ. 16.17. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ
9. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡΡΠ½ΠΎΡΡΡ Manager, Π° ΠΏΠΎΡΠΎΠΌ Π²ΡΠ΄Π΅Π»ΠΈΡΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ employees Π΄Π»Ρ Manager. Π ΠΎΠ±Π»Π°ΡΡΠΈ Relationships (ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΡ) Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Employee (Π‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊ) Π² ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΌΡΡ ΠΌΠ΅Π½Ρ Destination (ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅). ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ β Π²Π΅Π΄Ρ Π² ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΡΠ½ΠΎΡΡΠΈ Manager ΠΈ Employee. Π ΡΡΠΎΠ»Π±ΡΠ΅ Inverse (ΠΠ±ΡΠ°ΡΠ½ΡΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ) ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ manager (ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ manager Π±ΡΠ΄Π΅Ρ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° (Employee) Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ (Manager)). ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ»Π°ΠΆΠΎΠΊ To-Many Relationship (ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ) Π² ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΎΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½ΡΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 16.1). Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½Π° ΡΠΈΡ. 16.18.
Π ΠΈΡ. 16.18. ΠΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ ΠΈ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ
10. ΠΡΠ΄Π΅Π»ΠΈΡΠ΅ ΠΎΠ±Π΅ ΡΡΡΠ½ΠΎΡΡΠΈ (Employee ΠΈ Manager), Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ File β New File (Π€Π°ΠΉΠ» β ΠΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ») ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 16.2.
Π‘ΠΎΠ·Π΄Π°Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΎΠ΄ΠΈΠ½ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ», ΠΎΡΠΊΡΠΎΠΉΡΠ΅. h-ΡΠ°ΠΉΠ» Π²Π°ΡΠ΅ΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ Employee:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class Manager;
@interface Employee: NSManagedObject
@property (nonatomic, retain) NSNumber * age;
@property (nonatomic, retain) NSString * firstName;
@property (nonatomic, retain) NSString * lastName;