Last active
November 6, 2018 08:27
-
-
Save edom18/8799638 to your computer and use it in GitHub Desktop.
[Objective-C] CoreDataを使う ref: https://qiita.com/edo_m18/items/8bc7615eb2f6d546705d
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (NSURL *)applicationDocumentsDirectory | |
{ | |
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; | |
return url; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (NSManagedObjectContext *)managedObjectContext | |
{ | |
if (_managedObjectContext != nil) { | |
return _managedObjectContext; | |
} | |
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; | |
if (coordinator != nil) { | |
_managedObjectContext = [[NSManagedObjectContext alloc] init]; | |
[_managedObjectContext setPersistentStoreCoordinator:coordinator]; | |
} | |
return _managedObjectContext; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (NSManagedObjectModel *)managedObjectModel | |
{ | |
if (_managedObjectModel != nil) { | |
return _managedObjectModel; | |
} | |
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"HogeModel" withExtention:@"momd"]; | |
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; | |
return _managedObjectModel; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator | |
{ | |
if (_persistentStoreCoordinator) { | |
return _persistentStoreCoordinator; | |
} | |
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"HogeProj.splite"]; | |
NSError *error = nil; | |
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; | |
if (![_persistentStoreCoordinator addPersistentStoreWitType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { | |
NSLog(@"Unresolved error %@, %@", error, [error userInfo]); | |
abort(); | |
} | |
return _persistentStoreCoordinator; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//削除対象のフェッチ情報を生成 | |
NSFetchRequest *deleteRequest = [[NSFetchRequest alloc] init]; | |
[deleteRequest setEntity:[NSEntityDescription entityForName:@"HogeData" inManagedObjectContext:managedObjectContext]]; | |
[deleteRequest setIncludesPropertyValues:NO]; //managed object IDのみフェッチ | |
NSError *error = nil; | |
//生成したフェッチ情報からデータをフェッチ | |
NSArray *results = [managedObjectContext executeFetchRequest:deleteRecest error:&error]; | |
//[deleteRequest release]; //ARCオフの場合 | |
//フェッチしたデータを削除処理 | |
for (NSManagedObject *data in results) { | |
[managedObjectContext deleteObject:data]; | |
} | |
NSError *saveError = nil; | |
//削除を反映 | |
[managedObjectContext save:&saveError]; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//fetch設定を生成 | |
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:NSStringFromClass([HogeData class])]; | |
//sort条件を設定 | |
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO]; | |
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; | |
[fetchRequest setSortDescriptors:sortDescriptors]; | |
//ARCオフの場合はreleaseする | |
//[sortDescriptor release]; | |
//[sortDescriptors release]; | |
//fetch設定を元に、managedObjectContextからデータを取得 | |
//返り値は`NSManagedObject`の配列になる | |
NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; | |
for (NSManagedObject *data in results) { | |
//do something. | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (NSManagedObjectModel *)managedObjectModel | |
{ | |
if (_managedObjectModel != nil) { | |
return _managedObjectModel; | |
} | |
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"HogeModel" withExtension:@"momd"]; | |
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; | |
return _managedObjectModel; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator | |
{ | |
if (_persistentStoreCoordinator) { | |
return _persistentStoreCoordinator; | |
} | |
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"HogeProj.splite"]; | |
NSError *error = nil; | |
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; | |
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { | |
NSLog(@"Unresolved error %@, %@", error, [error userInfo]); | |
abort(); | |
} | |
return _persistentStoreCoordinator; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (NSManagedObjectContext *)managedObjectContext | |
{ | |
if (_managedObjectContext != nil) { | |
return _managedObjectContext; | |
} | |
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; | |
if (coordinator != nil) { | |
_managedObjectContext = [[NSManagedObjectContext alloc] init]; | |
[_managedObjectContext setPersistentStoreCoordinator:coordinator]; | |
} | |
return _managedObjectContext; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//fetch設定を生成 | |
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:NSStringFromClass([HogeData class])]; | |
//sort条件を設定 | |
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO]; | |
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; | |
[fetchRequest setSortDescriptors:sortDescriptors]; | |
//ARCオフの場合はreleaseする | |
//[sortDescriptor release]; | |
//[sortDescriptors release]; | |
//fetch設定を元に、managedObjectContextからデータを取得 | |
//返り値は`NSManagedObject`の配列になる | |
NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; | |
for (NSManagedObject *data in results) { | |
//do something. | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
HogeData *hogeData = (HogeData *)[NSEntityDescription insertNewObjectForEntityForName:@"HogeData" inManagedObjectContext:managedObjectContext]; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//削除対象のフェッチ情報を生成 | |
NSFetchRequest *deleteRequest = [[NSFetchRequest alloc] init]; | |
[deleteRequest setEntity:[NSEntityDescription entityForName:@"HogeData" inManagedObjectContext:managedObjectContext]]; | |
[deleteRequest setIncludesPropertyValues:NO]; //managed object IDのみフェッチ | |
NSError *error = nil; | |
//生成したフェッチ情報からデータをフェッチ | |
NSArray *results = [managedObjectContext executeFetchRequest:deleteRecest error:&error]; | |
//[deleteRequest release]; //ARCオフの場合 | |
//フェッチしたデータを削除処理 | |
for (NSManagedObject *data in results) { | |
[managedObjectContext deleteObject:data]; | |
} | |
NSError *saveError = nil; | |
//削除を反映 | |
[managedObjectContext save:&saveError]; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (NSURL *)applicationDocumentsDirectory | |
{ | |
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; | |
return url; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Entityを指定してFetchRequestを作る | |
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:NSStringFromClassName(anEntityClass.class)]; | |
request.includesSubentities = NO; | |
NSError *error = nil; | |
AppDelegate *delegate = UIApplication.sharedApplication.deleate; | |
// NSManagedObjectContextから、生成したリクエストを元に件数だけを取得 | |
// (NSManagedObjectContextは適宜定義されているものに置き換えてください) | |
NSInteger count = [delegate.managedObjectContext countForFetchRequest:request error:&error]; | |
// もし見つからなければ0件 | |
if (count == NSNotFound) { | |
return 0; | |
} | |
return count; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
HogeData *hogeData = (HogeData *)[NSEntityDescription insertNewObjectForEntityForName:@"HogeData" inManagedObjectContext:managedObjectContext]; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment