1
我有一個使用核心數據的小應用程序,並且NSPersistentDocument
。對於新文檔,我用一個Settings
元素初始化文檔。我已經可以抑制由初始化生成的撤銷條目,但...撤消問題:在標題欄中以編程方式初始化`NSPersistentDocument`
奇怪的行爲是這樣的:文檔在窗口標題中沒有「編輯」標誌開始。只要我點擊進入「編輯」菜單,就會出現「編輯」標誌,並且突然出現撤消操作。
這裏我init()
代碼:
class Document: NSPersistentDocument {
var settings: Settings! = nil
override init() {
super.init()
do {
let fetchSettings = NSFetchRequest(entityName: "Settings")
let settingsList = try self.managedObjectContext!.executeFetchRequest(fetchSettings)
precondition(settingsList.count < 2, "Too many settings object in the core data store.")
if settingsList.count == 1 {
settings = settingsList[0] as? Settings
precondition(settings != nil)
} else {
managedObjectContext!.undoManager!.disableUndoRegistration()
settings = NSEntityDescription.insertNewObjectForEntityForName("Settings", inManagedObjectContext: self.managedObjectContext!) as? Settings
precondition(settings != nil)
// Here setup the "settings" object...
settings.xxx = //...
settings.yyy = //...
managedObjectContext!.undoManager!.enableUndoRegistration()
}
} catch {
preconditionFailure("Could not retrieve/create settings object because of an unknown core data error.")
}
}
// ... more methods ...
}
的問題是,一旦出現此撤銷條目,用戶可以撤消初始Settings
對象引起許多麻煩的創建。
這是已知的問題嗎?我怎樣才能防止這種情況發生?
這裏這表明了效果的視頻:https://youtu.be/O4lURxLAelE