1.)CoreDataTutorialというビューベースのアプリケーションを作成します。
2.)コアデータフレームワークをプロジェクトに追加します。フレームワークを右クリックし、[追加]> [既存のフレームワーク]を選択します。CoreData.frameworksを見つけて追加をクリックします。
3.)データモデルをプロジェクトに追加します。 「リソース」を右クリックし、「追加」>「新規ファイル...」を選択します.iOSの下で「リソース」を選択し、「データモデル」を選択して「次へ」を押します。
ファイルにCoreDataTutorial.xcdatamodelという名前を付け、nextを押します。
4.)作成したファイルCoreDataTutorial.xcdatamodelをダブルクリックします。モデルオブジェクトエディタが開きます。
左上のペインで、+記号をクリックして新しいエンティティを追加します。
右上のペインに名前を入力して、エンティティ名「SomeName」に名前を付けます。
エンティティが選択されている間に、上部中央のペインで+記号をクリックし、[属性の追加]を選択します。この属性「some_attribute_name」に名前を付け、Stringに設定します。
5.)次に、2つのエンティティ間のリレーションシップを作成します。エンティティペインでエンティティを選択します。プロパティペインの+記号をクリックして、[関係を追加]を選択します。関係に「作成」という名前を付け、宛先をリリースに設定し、削除ルールをカスケードに設定します。
逆を行うには、エンティティペインで[リリース]を選択します。プロパティペインの+記号をクリックして、[関係を追加]を選択します。関係に「creator」と名前を付け、DestinationをArtistに設定し、Inverseを解放に設定し、Deleteルールをカスケードに設定します。
これでオブジェクトエディタを閉じることができます。
6.)その他のソースを展開し、CoreDataTutorial_Prefix.pchをダブルクリックします。 CoreDataのインポートを追加します。
#ifdef __OBJC__
#import <foundation foundation.h="">
#import <uikit uikit.h="">
#import <coredata coredata.h="">
#endif
これにより、各ファイルにインポートする必要がなくなります。
7.)次に、アプリケーションデリゲートヘッダーファイルと実装ファイルを設定します。
最初にヘッダーファイル。 NSManagedObjectContext、NSManagedObjectModel、およびNSPersistentStoreCoordinatorの変数を作成する必要があります。
また、applicationDocumentsDirectoryという名前のアクションを宣言します。このアクションは、データがSQLiteファイルに保存されるcondimentsディレクトリへのパスを取得します。また、アプリケーションが終了したときにコンテキストを保存するアクション。
ここでは、完了後のヘッダーファイルの外観を示します。 CoreDataTutorial_Prefix.pchファイルにimportステートメントを追加したので、ここでインポートする必要はありません。あなたはARCを使用していない場合
#import <uikit uikit.h="">
@class CoreDataTutorialViewController;
@interface CoreDataTutorialAppDelegate : NSObject <uiapplicationdelegate>
{
UIWindow *window;
CoreDataTutorialViewController *viewController;
@private
NSManagedObjectContext *managedObjectContext;
NSManagedObjectModel *managedObjectModel;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet CoreDataTutorialViewController *viewController;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (NSURL *)applicationDocumentsDirectory;
- (void)saveContext;
@end
8)は、メモリ
9)applicationDocumentsDirectoryメソッドを実装の割り当て解除についての世話をします。
/**
Returns the URL to the application's Documents directory.
*/
- (NSURL *)applicationDocumentsDirectory
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
10)次に、saveContextメソッドを実装します。
- (void)saveContext
{
NSError *error = nil;
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
if (managedObjectContext != nil)
{
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
{
/*
Replace this implementation with code to handle the error appropriately.
abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. If it is not possible to recover from the error, display an alert panel that instructs the user to quit the application by pressing the Home button.
*/
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
11)最後に、あなたの変数のためのあなたのアクセサメソッドを実装し、それはそれです。
[コアデータの学習に最適なリソースは?](http://stackoverflow.com/questions/2956841/best-resources-for-learning-core-data) –
ありがとうございました。私は初心者であることを踏まえて、問題の代替ルートを辿って、後でコアデータを調査するかもしれないと思います。私の問題はスコアボードを作成することですが、代わりにplistを読み書きしようと思うかもしれません。 – garethdn