こんにちは、CoreData Persistence の使用に問題があります。私の問題は、アプリケーションを起動すると、(アプリ内のフォームから) データをデータベースに追加し、NSLog を使用してそれらを表示することです。しかし、実際には、iPadエミュレーターを停止してから再起動すると、これらのデータはすべて消えると思います..
だから、それが私のコードによるものなのか、それともエミュレーターによるものなのかはよくわかりません。アプリとエンティティのアーキテクチャを示す図を作成しました。
問題は、私が別のviewControllerを使用しているため、ManagedObjectModelをそれぞれに渡す必要があることです。私のフォームはnewDocumentViewControllerにあります.いくつかのエンティティを追加すると、他のすべてのviewControllerでそれらにアクセスし、アプリのローカルストレージに保存したいと思います.
ここに少し示すコードがあります:
AppDelegate.m
@synthesize managedObjectContext = __managedObjectContext;
@synthesize managedObjectModel = __managedObjectModel;
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
masterViewController.managedObjectContext = self.managedObjectContext;
detailViewController.managedObjectContext = self.managedObjectContext;
objectContext を受け取るために、各 masterViewController および DetailViewController (および DetailViewController から NewDocumenViewController まで) 内にこれらのプロパティがあります。
@property (nonatomic,strong) NSManagedObjectContext *managedObjectContext;
したがって、これにより、各コントローラーからデータにアクセスする方法が本当にわかりません。データは次のようにしてローカルに保存されますか?
NewDocumentController.m
-(void) addNewDocument:(NSString*)name with_niveau:(NSInteger)level{
Document *doc = [NSEntityDescription insertNewObjectForEntityForName:@"Document" inManagedObjectContext:managedObjectContext];
doc.nom=name;
doc.niveau=[NSNumber numberWithInteger:level];
}
-(void) addNewDocument_info:(NSString*)name with_createur:(NSString*)createur with_dateModif:(NSDate*)date1 with_status:(BOOL)etat{
DocumentInfo *doc_info = [NSEntityDescription insertNewObjectForEntityForName:@"DocumentInfo" inManagedObjectContext:managedObjectContext];
doc_info.nom =name;
doc_info.createur=createur;
doc_info.date_creation=[NSDate date];
doc_info.date_modification=date1;
doc_info.status= [NSNumber numberWithBool:etat];
}