2015-05-08 4 views
0

Я довольно смущен одной ошибкой, которую получаю при сохранении объекта. Я получаю следующее сообщение об ошибке (если я распечатать подробное описание):Ошибка при сохранении основного объекта данных

2015-05-08 08:19:51.589 Br[11240:208443] Core Data Save Error 

          NSValidationErrorKey 
activityObject 

          NSValidationErrorPredicate 
(null) 

          NSValidationErrorObject 
<BRActivity: 0x7deb2aa0> (entity: BRActivity; id: 0x7deb2780 <x-coredata:///BRActivity/t86C0E8CD-2B6C-4AF7-986A-4797B7BEFDF5> ; data: { 
activities =  (
); 
activityObject = nil; 
activityType = 0; 
body = "Someone left a comment on your post."; 
timestamp = "2015-05-08 04:24:46 +0000"; 
uuidString = "c6a06b45-e2d5-45bd-9f64-20b13ac87526"; 
}) 

          NSLocalizedDescription 
The operation couldn’t be completed. (Cocoa error 1570.) 
2015-05-08 08:19:51.590 Br[11240:208443] Core Data Save Error 

Так что с нетерпением в Интернете, это, кажется, проблема отношения. Таким образом, сообщение Br имеет отношения, называемые отношениями действий, обратным которым является объект активности. Теперь, как видно из ошибки, нет. Итак, какое решение мы здесь рассматриваем ... Есть ли способ сделать отношение «необязательным» (ok, чтобы быть нулем!), Или мне нужно добавить объект активности? Я действительно не хочу ничего сломать, поэтому, если есть тонкое решение, дайте мне знать. Спасибо, ребята!

Также здесь является методом окружающего сохранения:

- (void)importArray:(NSArray *)array entityName:(NSString *)entityName attributeName:attributeName error:(NSError *__autoreleasing *)error { 
NSParameterAssert(array); 
NSParameterAssert(entityName); 

[self.context performBlockAndWait:^{ 
    for (NSDictionary *jsonDictionary in array) { 
     NSManagedObject *managedObject = [NSManagedObject upsertWithContext:self.context entityName:entityName dictionary:jsonDictionary attributeName:attributeName error:error]; 
     if (nil == managedObject) { 
      if ([self.context hasChanges]) { 
       [self.context rollback]; 
      } 
      return; 
     } 
    } 

    if ([self.context hasChanges]) { 
     if (![self.context save:error]) { 
      NSError *err = *error; 


      NSDictionary *userInfo = [err userInfo]; 
      if ([userInfo valueForKey:@"NSDetailedErrors"] != nil) { 
       // ...and loop through the array, if so. 
       NSArray *errors = [userInfo valueForKey:@"NSDetailedErrors"]; 
       for (NSError *anError in errors) { 

        NSDictionary *subUserInfo = [anError userInfo]; 
        subUserInfo = [anError userInfo]; 
        // Granted, this indents the NSValidation keys rather a lot 
        // ...but it's a small loss to keep the code more readable. 
        NSLog(@"Core Data Save Error\n\n \ 
          NSValidationErrorKey\n%@\n\n \ 
          NSValidationErrorPredicate\n%@\n\n \ 
          NSValidationErrorObject\n%@\n\n \ 
          NSLocalizedDescription\n%@", 
          [subUserInfo valueForKey:@"NSValidationErrorKey"], 
          [subUserInfo valueForKey:@"NSValidationErrorPredicate"], 
          [subUserInfo valueForKey:@"NSValidationErrorObject"], 
          [subUserInfo valueForKey:@"NSLocalizedDescription"]); 
       } 
      } 


      NSLog(@"Error: %@", err.localizedDescription); 
     } 
     return; 
    } 
}]; 
} 

ответ

0

Да, отношения могут быть необязательными. Выберите связь, и вы увидите необязательный параметр в панели инспектора данных в правом верхнем углу.

Смежные вопросы