2016-08-11 2 views
0

Привет Я построения базы данных газеты, которые имеют предмет отношения к себе (пункт может иметь много другой пункт, как ребенок)быстрое ядро ​​один ко многим для собственного лица

вот мой NSmanageObjectSubclass

import Foundation 
import CoreData 
extension Item { 

    @NSManaged var by: String? 
    @NSManaged var dead: NSNumber? 
    @NSManaged var descendants: NSNumber? 
    @NSManaged var id: NSNumber? 
    @NSManaged var isdeleted: NSNumber? 
    @NSManaged var score: NSNumber? 
    @NSManaged var text: String? 
    @NSManaged var time: NSDate? 
    @NSManaged var title: String? 
    @NSManaged var type: String? 
    @NSManaged var url: String? 
    @NSManaged var kids: NSSet? 
    @NSManaged var parent: Item? 
    @NSManaged var parts: NSSet? 

} 

Проблема заключается в том, как я могу добавить item в собственность kids: NSSet отношение определяет один для многих самостоятельно с обратным. Любая помощь очень ценится. Благодарю.

мой CoreData xcmodel enter image description here

enter image description here

enter image description here

+1

Добавили ли вы отношения в XCDataModel? – Harsh

+0

Да, я установил отношения «один ко многим» с инверсией для элемента –

ответ

1

Первый обновление ваш класс класса управляемых объектов, чтобы использовать наборы вместо NSSet

 import Foundation 
     import CoreData 
     extension Item { 

      @NSManaged var by: String? 
      @NSManaged var dead: NSNumber? 
      @NSManaged var descendants: NSNumber? 
      @NSManaged var id: NSNumber? 
      @NSManaged var isdeleted: NSNumber? 
      @NSManaged var score: NSNumber? 
      @NSManaged var text: String? 
      @NSManaged var time: NSDate? 
      @NSManaged var title: String? 
      @NSManaged var type: String? 
      @NSManaged var url: String? 
      @NSManaged var kids: Set<Item> 
      @NSManaged var parent: Item? 
      @NSManaged var parts: NSSet? 

     } 

Во-вторых создать fetchRequest имени getItemByID с выражением идентификатор == $ ID

Третий Создайте функцию, чтобы получить элемент по id

func getItemById(ID:String) -> Item? 
    { 
     let fetchRequest : NSFetchRequest = self.managedObjectModel.fetchRequestFromTemplateWithName("getItemByID", substitutionVariables: ["ID": ID])! 
     do { 
      let fetchedResult = try managedObjectContext!.executeFetchRequest(fetchRequest) as! [Item] 
      if fetchedResult.count > 0 { 
       let result = fetchedResult[0] 
       return result 
      } 
     } 
     catch { 
      print("Could not fetch \(error)") 
     } 
     return nil 
    } 

После этого у вас есть много вариантов, чтобы установить отношения

а) создать отношения после добавления родительского & ребенка CoreData

func addChildToParent(childID:String,parentID:String) 
    { 
     if let childItem = getItemById(childID) 
     { 
      if let parentItem = getItemById(parentID) 
      { 
       parentItem.kids.insert(menuItemCatering) 
       childItem.parent = parentItem 
      } 
     } 
     saveContext() 
    } 
+0

Привет, спасибо за вашу помощь. Теперь я могу добавить отношения. Сложная часть состоит в том, чтобы использовать Set вместо стандартного NSSet. Это ошибка? В objectC я могу использовать Xcode для создания рабочей находки NSManageSubclass, но в Swift отношение к собственному сущности кажется неработоспособным автоматически –

+0

Это не ошибка, но это проще, чем использование NSSet & получение измененной копии, а затем сохранение ее обратно. –

0

Да я установить один ко многим отношений с обратным для элемента

0

Попробуйте это автоматически создавать отношения и свойства.

Generating Swift models from Core Data entities

т.е. Edit: Я нашел решение для генерации Swift модель от объекта Core Data:

На Xcode:

Editor> Создать NSManagedOjbect> Нажмите кнопку "Далее" > Нажмите кнопку «Далее»> Выберите «Быстрый» Langage> Нажмите кнопку «Создать»

Вот ссылка о том, как создать отношения с нуля. Это очень хорошо объясненный и удивительный учебник. Пройдите это, и вы сможете понять все. http://code.tutsplus.com/tutorials/core-data-from-scratch-relationships-and-more-fetching--cms-21505

+0

Привет, я уже создал это. Но как добавить элемент в набор для примера item.kids.add (kid) или что-то подобное –

+0

Обновить мой ответ. – Harsh

+0

Привет, спасибо за помощь. Я знаю, как создавать отношения.Но моя проблема заключается в том, чтобы добавить элемент в отношение к собственной сущности. Я загрузил изображение моей coredata и вызвал объект NSmanage. но не может добавить элемент к детям (свойство NSSet) –

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