2016-11-17 4 views
0

Ошибка записи основных ошибок CoreData: ошибка: серьезная ошибка приложения. Исключение было обнаружено во время обработки изменений Core Data. Обычно это ошибка в наблюдателе NSManagedObjectContextObjectsDidChangeNotification. - [__ NSCFSet addObject:]: попытка вставить ноль с USERINFO (NUL»Магическая запись Основные данные Ошибка

func insertChecklistItem(checklistst:Checklist,checklistItemDictionary:NSDictionary, localContext:NSManagedObjectContext) -> Bool 
{ 
    var isInserted = false 

    MagicalRecord.save ({ 
     (context:NSManagedObjectContext) in 

     let checklistItem:ChecklistItem = ChecklistItem.mr_createEntity(in: localContext)! 
     if checklistItemDictionary.value(forKey: "id") != nil 
     { 
      checklistItem.itemId = checklistItemDictionary.value(forKey: "id")! as? String 
     } 



     if checklistItemDictionary["description"] != nil 
     { 
      checklistItem.itemDescription = checklistItemDictionary.value(forKey: "description")! as? String 
     } 

     if checklistItemDictionary.value(forKey: "name") != nil 
     { 
      let NameDicitonary = checklistItemDictionary.value(forKey: "name")! as? NSDictionary 
      checklistItem.name = NameDicitonary?.value(forKey: "text") as? String 
     } 

     let sequanceNumber = checklistItemDictionary["sequencenumber"]! as! NSDictionary 
     if sequanceNumber["text"] != nil 
     { 
      let sequanceNumberText = Int(sequanceNumber["text"]! as! String) 
      checklistItem.sequencenumber = sequanceNumberText as NSNumber? 
     } 

     checklistItem.checklist = checklistst 

     if let scaleDictionary = checklistItemDictionary.value(forKey: "scale") 
     { 
      isInserted = insertScale(checklistItem: checklistItem, scaleDictionary: scaleDictionary as! NSDictionary, localContext: localContext) 

     } 
     print("------------CRASH \(checklistItemDictionary["checklistitem"])") 

     if checklistItemDictionary["checklistitem"] != nil 
     { 
      if checklistItemDictionary["checklistitem"]! is NSArray 
      { 
       let checklistItems = checklistItemDictionary["checklistitem"]! as! NSArray 
       for item in checklistItems 
       { 
        let checklistSubItemDicitonary = item as! NSDictionary 
        insertChecklistSubItem(checklistst: checklistst, checklistItemDictionary: checklistSubItemDicitonary, localContext: localContext, parentId: checklistItem.itemId!) 
       } 

      } 
      else 
      { 

      } 
     } 


    } 
    ) 

    let data = ChecklistItem.mr_findAll() 
    for d1 in data! 
    { 
     let d:ChecklistItem = d1 as! ChecklistItem 
     print(d.itemId,d.itemDescription,d.name,d.checklist) 
    } 


    return isInserted 
} 

Все работало хорошо на быстром 2.3. После обновления быстры 3.0, пришел выше ошибка. заранее спасибо.

ответ

0

Вы не должны использовать контекст снаружи Magical пластинки сохранить блок. Используйте предоставленный параметр context.

В основных данных разные контексты не являются потокобезопасными.

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