gpt4 book ai didi

ios - 测试时默认 undoManager 为 nil

转载 作者:行者123 更新时间:2023-11-28 06:46:19 30 4
gpt4 key购买 nike

我正在努力向使用 undoManager 的 Swift 库添加一些测试。在库的演示中,将以下打印添加到 viewDidAppear: 会导致打印 NSUndoManagerObject

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
print(undoManager)
}

我为测试编写了另一个 ViewController,当我在 ViewController 的 viewDidAppear: 中有相同的代码时,打印了 nil

我正在使用以下代码为测试创建 ViewController:

override func setUp() {
super.setUp()

// Put setup code here. This method is called before the invocation of each test method in the class.
let storyboard = UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.dynamicType))

viewController = storyboard.instantiateInitialViewController() as! ViewController
viewController.viewDidLoad()
viewController.viewDidAppear(false)

// Test and Load the View at the Same Time!
XCTAssertNotNil(viewController.view)
}

我在 ViewController 的 viewDidLoad: 中调用了 becomeFirstResponder()

我想测试使用默认 undoManager 的逻辑,所以我需要弄清楚为什么它是 nil。我试过为默认的 undoManager 分配一个 NSUndoManager 的新实例,但它是一个只读属性。

这是 Github repository如果您有兴趣查看代码。

最佳答案

我无法使用默认的 undoManager 来测试这个项目,但我最终使用了以下我认为同样有效的解决方案。在使用 undoManager 的类中,我添加了一个私有(private)的 NSUndoManager 变量,然后在 init 中定义它,如下所示:

classUndoManager = undoManager
if classUndoManager == nil {
classUndoManager = NSUndoManager()
}

任何使用 undoManager 的地方现在都使用 classUndoManager

关于ios - 测试时默认 undoManager 为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36273800/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com