在添加新数据属性之前检查核心数据属性是否包含值

时间:2015-09-30 09:54:01

标签: ios swift core-data

我想在核心数据存储中检查我要创建的类别名称是否已存在。

如果它存在,那么我应该显示一个警报视图而不是创建它。如果它不存在,那么我可以继续创建我的新类别。

 func createCategory() {
            let entity = NSEntityDescription.entityForName("Category", inManagedObjectContext: context!)
            let categoryEntity = Category(entity: entity!, insertIntoManagedObjectContext: context)
            let index = pickerView.selectedRowInComponent(0)
            let color = categoryColor[index]
            let fetchRequest = NSFetchRequest(entityName: "Category")
                fetchRequest.fetchLimit = 1
            let predicate = NSPredicate(format: "name = %@", name.text)
            let fetchResults = context!.executeFetchRequest(fetchRequest, error: &error) as? [Category]

            if let results = fetchResults {
                var requiredCategory : Category
                if (results.count > 0) {
                    requiredCategory = results[0] as Category
                } else {
                    requiredCategory = Category(entity: categoryEntity, insertIntoManagedObjectContext: context!)
                    requiredCategory.name = name.text
                    // set the other properties for the Category as necessary
                }
                category?.name = requiredCategory
                category!.descript = descriptionField.text
                category!.color = color
                println(category!.name)
                context?.save(nil)
            name.text = ""
            descriptionField.text = ""
            }
        }

1 个答案:

答案 0 :(得分:0)

您应该创建fetchRequest并在创建categoryEntity之前执行它。然后,检查results.count。如果计数为> 0,您已经有一个,您应该显示您的提醒。如果不是,则可以创建categoryEntity,配置并保存。

请注意,您可能希望在谓词中使用=[cd],以避免使用同名但大写不同的多个类别。