0

こんにちは、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];
}
4

1 に答える 1

0

データを保存する必要があります:

NSError *error = nil;
[self.managedObjectContext save:&error]; 
于 2012-06-07T11:00:00.590 に答える