[XCODE] CoreDataを用いたデータ管理を行う方法。準備編。
CoreDataを用いたデータ管理を行う方法を今日は書きたいと思います。
色々と書いていたら長くなったので、まずはCoreDataの準備について記載したいと思います。

iOS Core Data チュートリアル
ご参考になれば幸いです(((o(*゚▽゚*)o)))
- CoreDataを用いてデータ管理を行う方法。準備編。
- CoreDataを用いてデータ管理を行う方法。登録編!!
- CoreDataを用いてデータ管理を行う方法。更新・削除編!!!
- CoreDataを用いてデータ管理を行う方法。検索編!!!!
ツールバーで「File -> New ->File…」から、追加できます。

作成できたら、データ構造の定義を行います。
Model定義ファイルを開き、「Add Entity」ボタンを押すと、Entityが追加できます。
Entityができたら、そのEntityが保持する属性(attribute)を定義していきます。
今回は、「Setting」という名前のEntityを追加し、属性に「key」「value」を定義しました。

CoreDataを使う為には、Frameworkの読み込みが必要ですので、利用するファイルに、 以下のimport文を記載します。

また、Model定義を読み込んだ情報を保持するCoreDataのオブジェクトを、クラスのフィールドとかに追加します。
続いて、実際にModel定義を読み込んで、NSManagedObjectContextのインスタンスを作成するソースコードです。
ここは長いソースコードですが、「Tutorial.sqlite」や「Tutorial.momd」部分の名前を、 今回作成したModel定義ファイルの名称に変えれば、あとはそのまま活用できます。
この処理で作成したNSManagedObjectContextを、今後のInsert, Update, Delete, Selectで利用します。
NSManagedObjectContextは、プロジェクト生成時に自動的にコードが生成されるので、 使えるけど、作り方が分かんないと思っていました。今回詳しく学べて出来て良かったー(*´∇`*)
最後まで読み頂きましてありがとうございました。
色々と書いていたら長くなったので、まずはCoreDataの準備について記載したいと思います。

CoreDataとは
CoreDataとは、iPhoneアプリでデータを永続的に保存できる仕組みの一つです。データを扱う機能が豊富に そろっているようで、便利なフレームワークのようです。詳細は、以下を参照してみて下さい。iOS Core Data チュートリアル
CoreDataを用いたデータ管理
この記事も含めて、以下のような分類でCoreDataの使い方をブログに書いています。ご参考になれば幸いです(((o(*゚▽゚*)o)))
- CoreDataを用いてデータ管理を行う方法。準備編。
- CoreDataを用いてデータ管理を行う方法。登録編!!
- CoreDataを用いてデータ管理を行う方法。更新・削除編!!!
- CoreDataを用いてデータ管理を行う方法。検索編!!!!
CoreDataを使うための準備
CoreDataを使ったブランクプロジェクトを、XCODEの新規作成メニューで作る事も可能ですが、 今回はあえて、1つずつ自分で作るようにしてみました(機能のより深い理解をするためです)。Model定義ファイルを作成する
永続化するデータの形式を定義するModel定義ファイルを追加します。ツールバーで「File -> New ->File…」から、追加できます。

作成できたら、データ構造の定義を行います。
Model定義ファイルを開き、「Add Entity」ボタンを押すと、Entityが追加できます。
Entityができたら、そのEntityが保持する属性(attribute)を定義していきます。
今回は、「Setting」という名前のEntityを追加し、属性に「key」「value」を定義しました。

作成したModel定義を読み込む
上記で作成したModel定義を読み込み、CoreDataとしてソースコード上で使えるようにします。CoreDataを使う為には、Frameworkの読み込みが必要ですので、利用するファイルに、 以下のimport文を記載します。
#import <CoreData/CoreData.h>あと、CoreDataのフレームワークも追加します。これを追加し忘れるとコンパイル時に、 「リンク先がありません」エラーとなってしまいます。

また、Model定義を読み込んだ情報を保持するCoreDataのオブジェクトを、クラスのフィールドとかに追加します。
@interface CoreDataTutorialViewController : UIViewController {
NSManagedObjectContext *context;
}
@end
続いて、実際にModel定義を読み込んで、NSManagedObjectContextのインスタンスを作成するソースコードです。
ここは長いソースコードですが、「Tutorial.sqlite」や「Tutorial.momd」部分の名前を、 今回作成したModel定義ファイルの名称に変えれば、あとはそのまま活用できます。
// NSManagedObjectContextのインスタンスを作成するメソッド
- (void) loadManagedObjectContext {
if (context != nil)
return;
NSPersistentStoreCoordinator *aCoodinator = [self coordinator];
if (aCoodinator != nil) {
context = [[NSManagedObjectContext alloc] init];
[context setPersistentStoreCoordinator:aCoodinator];
}
}
// NSPersistentStoreCoordinatorインスタンスを作成するメソッド。
// NSManagedObjectContextを作成する際に必要となる。
// データ永続化の具体的な方法を実装しているが、
// 今回は、sqliteを用いたデータ永続化を行う。
- (NSPersistentStoreCoordinator *)coordinator {
if (coordinator != nil) {
returncoordinator;
}
NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSURL *storeURL = [NSURLfileURLWithPath: [directory stringByAppendingPathComponent: @"Tutorial.sqlite"]];
NSError *error = nil;
coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[selfmanagedObjectModel]];
if (![coordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:nil
error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
returncoordinator;
}
// NSManagedObjectModelのインスタンスを生成するクラス。
// 上記で作成したモデル定義ファイルを読み込む。
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"Tutorial"ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return managedObjectModel;
}
この処理で作成したNSManagedObjectContextを、今後のInsert, Update, Delete, Selectで利用します。
最後に
今日の内容でNSManagedObjectContextを作成する所までを記載しました。NSManagedObjectContextは、プロジェクト生成時に自動的にコードが生成されるので、 使えるけど、作り方が分かんないと思っていました。今回詳しく学べて出来て良かったー(*´∇`*)
最後まで読み頂きましてありがとうございました。






