Я получил 2 сущности:объекта как ошибки - CoreData Отношение
- Todo
- Даты
Они связаны с обратной зависимостью, так один объект Todo может иметь несколько дат, так Todo обладает свойствами :
@NSManaged var dates: NSSet?
@NSManaged var name: String?
и каждый объект Dates может иметь один Todo, поэтому он имеет свойство:
@NSManaged var todo: Todo?
@NSManaged var wasDone: NSNumber? //It is a boolean
@NSManaged var date: NSDate?
Когда я создаю Todo, я вставляю новый объект в имя сущности.
//Saving into local device context
guard let ourcontext = self.context else {print("no context");return}
guard let newTodo = NSEntityDescription.insertNewObjectForEntityForName("Todo", inManagedObjectContext: ourcontext) as? Todo else {return}
let myTodoName = self.addTodoView.searchTextField.text
newTodo.name = myTodoName
Затем рассчитать даты и я хочу, чтобы вставить их в NSSet из Todo (я сделал функцию в Todo:
func addObject(value: Dates) {
let dates = self.mutableSetValueForKey("dates")
dates.addObject(value)
}
поэтому после вычисления даты и создания «datesArray» из них I хотят, чтобы добавить их к уже упоминалось выше NSSet:
for _ in self.datesArray {
guard let newDate = NSEntityDescription.insertNewObjectForEntityForName("MedicineDates", inManagedObjectContext: ourContext) as? MedicineDates else {return}
newTodo.addObject(newDate)
Вот первый вопрос - действительно ли я создать связь между объектами корректно
?Тогда я хочу, чтобы создать (в cellForRowAtIndexPath, так как это отображается в Tableview) массив из NSSet из Todo:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("MyCell", forIndexPath: indexPath) as! TodoTableViewCell
guard let object = fetchedResultsController?.objectAtIndexPath(indexPath) as? Todo else {return cell}
NSSet к массиву:
let fetchedData = object.dates?.allObjects as! [Dates]
let datesArray = [NSDate]()
for object in fetchedData {
datesArray.append(object.date!)
}
И вот бум. Когда я пытаюсь развязать object.date, он сообщает мне, что «неожиданно нашел nil при распаковке необязательного значения», но я знаю, что fetchedData с объектами типа Date в нем существует.
В чем я ошибался, или я этого не делал?