コアデータのエンティティの一意性制約が機能しない(ユニークアイテムの名前を作るために)。私が読んだことはすべて、それがかなりシンプルだと言います - 制約を設定し、エラーを処理してください。私は何の誤りもなく、何度も同じエントリーを追加することができます。私は新しいエンティティ制約インスペクタでコアデータにおける制約を設定しようとしています
アプリはIOS 9.0を必要としない、Xcodeのツールの要件は7.0
制約、category1Nameに設定され、文字列です。
私のaddItemコードは次のとおりです。
func addNewRecord() {
//check to be sure the entry is not empty
if (categoryTextField.text == "") {
//prompt requiring a name
let ac = UIAlertController(title: nil, message: "Name Required", preferredStyle: .Alert)
ac.addAction(UIAlertAction(title: "Ok", style: .Default, handler: nil))
self.presentViewController(ac, animated: true, completion: nil)
} else {
let newManagedObject = NSEntityDescription.insertNewObjectForEntityForName("Category1", inManagedObjectContext: kAppDelegate.managedObjectContext) as! Category1
newManagedObject.category1Name = categoryTextField.text
newManagedObject.category1Description = categoryTextView.text
//bunch more items...
//save it
kAppDelegate.saveContext()
makeEntryFieldsEnabledNO()
performSegueWithIdentifier("unwindToCategoriesTableViewController", sender: self)
}//if else
}//addNewRecord
AppDelegateが保存標準です:
func saveContext() {
if managedObjectContext.hasChanges {
do {
try managedObjectContext.save()
} catch {
//insert your standard error alert stuff here
let nserror = error as NSError
print("From the print line: Unresolved error \(nserror), \(nserror.userInfo)")
abort()
}//do catch
}//if moc
}//saveContext
はここでコアデータの制約です:
このアプリはiCloudのが有効になっています。
managedObjectContextポリシーをマージがNSMergeByPropertyObjectTrumpMergePolicy
lazy var managedObjectContext: NSManagedObjectContext = {
// Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail.
let coordinator = self.persistentStoreCoordinator
var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
managedObjectContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
return managedObjectContext
}()//var managedObjectContext
に設定されているすべての指導をいただければ幸いです。
私は制約が正しく保存されていることを確認倍になる - そこにある(またはあった)、それはモデルを更新することができなかったのXcodeのバグ - [この答え]を参照(http://stackoverflow.com/a/35682163を/ 3985749)。 – pbasdf