В моем проекте есть категория и объект рецептуры, который имеет отношение один к другому.Swift 2.1 Основные данные - Сохранение отношений создает пустую запись
Когда пользователь создает новый рецепт, выбор категории необязателен. Если не выбрано, для установления отношений с рецептом будет использоваться категория по умолчанию.
Когда createRecipe()
уволен, он добавит правильное отношение категорий к сущности рецепта. Но проблема в том, что в объекте категории будет добавлена пустая запись.
Я сделал, что оба changedCategory
и defaultCategory
не ""
поэтому не знаю, почему я вижу эту ""
добавляемые в категории сущности. Я проверяю ввод данных с помощью sqlitebrowser.
Как предотвратить добавление пустой записи в объект Category со следующим кодом?
func createRecipe(sender: AnyObject!) {
if let title = recipeTitle.text where title != "" {
let category = obtainCategoryEntity(changedCategory, defaultCategory: defaultCategory, context: self.context)
let recipe = (NSEntityDescription.insertNewObjectForEntityForName("Recipe", inManagedObjectContext: self.context) as! Recipe)
recipe.category = category
recipe.title = title
...
do {
try self.context.save()
} catch {
print("Could not save recipe")
}
}
}
func obtainCategoryEntity(changedCategory: String, defaultCategory: String, context: NSManagedObjectContext) -> RecipeCategory {
var category = NSEntityDescription.insertNewObjectForEntityForName("RecipeCategory", inManagedObjectContext: self.context) as! RecipeCategory
let fetchRequest = NSFetchRequest(entityName: "RecipeCategory")
if changedCategory != "" {
fetchRequest.predicate = NSPredicate(format: "name == %@", changedCategory)
} else {
fetchRequest.predicate = NSPredicate(format: "name == %@", defaultCategory)
}
if let results = (try? context.executeFetchRequest(fetchRequest)) as? [RecipeCategory] {
if results.count > 0 {
category = results[0]
}
}
return category
}
Спасибо. У меня есть category.name = categoryEntity в Create(). Разве это не дубликат? –
И не будет случая, когда запрос на выборку не находит существующую категорию. Я делаю эту проверку в диспетчере представления категорий, который я здесь не показывал. –
Я замечаю, что вы ответили на мой предыдущий вопрос http://stackoverflow.com/questions/36346733/swift-2-1-core-data-save-data-that-has-one-to-many-relationship-but- Dont-добавить. С этого вопроса все немного изменилось, и я применил ваш код к диспетчеру категорий, где необходимо добавить новую категорию и повторить проверку. В рассматриваемом конструкторе CreateRecipe, упомянутом в этом вопросе, я просто получаю объект категории и назначаю отношения, но он неожиданно создает запись пустой категории. –