CoreData - выборка не находит объекты - PullRequest
0 голосов
/ 30 июля 2011

Я новичок в coredata, и я создаю простую базу данных с результатом xml.

Я проверяю, существует ли запись, и если нет, добавьте новую, а затем сохраните, но когда я делаю это снова, e продолжает сохранять, а не находит запись.

Этот метод класса вызывается дважды (2 записи из xml), а затем я сохраняю в классе почты. ActivityID - это NSNumber.

Что я делаю не так?

Код:

+(CompanyActivity *)createActivityWithInfoFromServer:(NSDictionary *)activityDictFromArray  inManagedObjectContext:(NSManagedObjectContext *)context {

     CompanyActivity *companyActivity = nil;

     NSFetchRequest *request = [[NSFetchRequest alloc] init];
     request.entity = [NSEntityDescription entityForName:@"CompanyActivity" inManagedObjectContext:context];
     request.predicate = [NSPredicate predicateWithFormat:@"ActivityID == %@", [activityDictFromArray objectForKey:@"ActivityID"]];

     NSError *error = nil;
     companyActivity = [[context executeFetchRequest:request error:&error] lastObject];

     NSLog(@"activity: %@", companyActivity);

     if (!error && !companyActivity) {
          companyActivity = [NSEntityDescription insertNewObjectForEntityForName:@"CompanyActivity" inManagedObjectContext:context];
          companyActivity.ActivityID = [NSNumber numberWithInt:[[activityDictFromArray objectForKey:@"ActivityID"] integerValue]];
          companyActivity.ActivityDescription_PT = [activityDictFromArray objectForKey:@"ActivityDescription_PT"];
          companyActivity.ActivityDescription_EN = [activityDictFromArray objectForKey:@"ActivityDescription_EN"];
          companyActivity.DateChangedStamp = [NSDate date];
     }
     else
          NSLog(@"no Activity created. Errors: %@", error);

     return companyActivity;
}

Ответы [ 3 ]

2 голосов
/ 02 августа 2011

Проблема была в NSNumber.Он сохранял записи в базе данных, но так и не нашел их.На данный момент я изменил тип данных op на NSString.

Спасибо,

RL

1 голос
/ 30 июля 2011

Перво-наперво, вы протекаете request. Во-вторых, вы должны выполнить базовую отладку, чтобы найти проблему. Установите некоторые точки останова и проверьте выборку, чтобы убедиться, что идентификатор активности, который вы вставляете в выборку, является допустимым значением. Убедитесь, что вы также правильно заполняете созданный вами объект правильными значениями. Посмотрите, как все это происходит, и если ваша проблема не была решена, добавьте дополнительную информацию к вопросу с вашим прогрессом.

0 голосов
/ 31 июля 2011

Похоже, что вы никогда не сохраняете свои новые объекты после их создания.Попробуйте добавить следующий код в блок создания вашего объекта:

[context save:&error];
if(error) {
    NSLog(@"error saving entities: %@", error);
}
...