цель c Основные данные - атрибуты не сохраняются постоянно - PullRequest
0 голосов
/ 24 февраля 2011

мне нужна помощь !!! ^^

Я записываю в свои атрибуты (имя, имя) два имени человека и сохраняю их. Если я пытаюсь получить доступ к attrubutes в другом представлении, то они равны нулю. Я не понимаю почему?!?

Я так и сделал. Я получаю profileContext с помощью метода getProfile, и я получаю доступ к атрибутам с помощью точечной нотации, а затем сохраняю его. Мой NSLog покажет мне правильное имя и мой выбор.

ownProfile = [[MyProfile alloc] init];
profileContext = [ownProfile getProfile];
ownProfile = (MyProfile*)[NSEntityDescription insertNewObjectForEntityForName:@"MyProfile" inManagedObjectContext:profileContext];
ownProfile.Vorname = @"Max";
ownProfile.Nachname = @"Wilson";
NSLog(@"%@",ownProfile.Nachname);



if ([profileContext hasChanges]) {
    NSLog(@"It has changes!");
    [profileContext save:nil];
}

//Fetching  
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"MyProfile" inManagedObjectContext:profileContext];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];

NSArray *array = [profileContext executeFetchRequest:request error:nil];
for (int i=0; i < [array count]; i++) {
    MyProfile *object = [array objectAtIndex:i];
    NSLog(@"Name: %@",object.Nachname);
}

если я пытаюсь получить доступ к атрибутам в другом подклассе ViewController, они равны нулю. Это код:

- (void)viewDidLoad {
[super viewDidLoad];

ownProfile = [[MyProfile alloc] init];
NSManagedObjectContext *profileContext = [ownProfile getProfile];
ownProfile = [NSEntityDescription insertNewObjectForEntityForName:@"MyProfile" inManagedObjectContext:profileContext];

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"MyProfile" inManagedObjectContext:profileContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
[request setIncludesPropertyValues:NO]; //only fetch the managedObjectID

NSArray *array = [profileContext executeFetchRequest:request error:nil];
[request release];
MyProfile *object = [array objectAtIndex:[array count]-1];
NSLog(@"%@",object);

}

мой метод getProfile находится в NSManagedObjectClass и выглядит следующим образом:

-(NSManagedObjectContext*) getProfile {


NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],
                         NSMigratePersistentStoresAutomaticallyOption,
                         [NSNumber numberWithBool:YES],
                         NSInferMappingModelAutomaticallyOption, nil];


NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
NSLog(@"basePath = %@",basePath);
NSURL *storeUrl = [NSURL fileURLWithPath:[basePath stringByAppendingFormat:@"CoreData.sqlite"]];
NSPersistentStoreCoordinator *persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[NSManagedObjectModel mergedModelFromBundles:nil]];
NSLog(@"PersistentStore = %@",persistentStoreCoordinator);
NSError *error = nil;

if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
    NSLog(@"error loading persistent store..");
    [[NSFileManager defaultManager] removeItemAtPath:storeUrl.path error:nil];
    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
}

NSManagedObjectContext *profile = [[NSManagedObjectContext alloc] init];
[profile setPersistentStoreCoordinator:persistentStoreCoordinator];


return profile;

}

Пожалуйста, помогите мне !!! ^^

1 Ответ

0 голосов
/ 24 февраля 2011

Эй, ребята ... Я решил свою проблему !!!:)

Моя ошибка заключалась в том, что я добавил в метод viewDidLoad в строке

ownProfile = [NSEntityDescription insertNewObjectForEntityForName:@"MyProfile" inManagedObjectContext:profileContext];

другой объект в persistentStore, и я всегда читал новый объект, атрибуты которого равны нулю... конечно ^^

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...