当我运行以下测试用例时,testRemovePref方法失败,因为它实际上并未删除该值。我正在使用Xcode 7.2。为什么会这样呢?

编辑:这仅在测试属于框架库时发生。在应用程序中运行时,以下测试似乎可以正常工作。奇。

import XCTest
class NSUserDefaultsTests: XCTestCase {
    func testSetPref() {
        let prefs = NSUserDefaults.standardUserDefaults()
        prefs.setValue("value1", forKeyPath: "testKey")
        let val : String? = prefs.stringForKey("testKey")
        print("value=\(val)") // prints "value1"
        XCTAssertEqual("value1", val)

    }

    func testRemovePref() {
        let prefs = NSUserDefaults.standardUserDefaults()
        prefs.removeObjectForKey("testKey")

        let val : String? = prefs.stringForKey("testKey")
        print("value=\(val)") // prints "value1"
        XCTAssertNil(val)
    }
}

最佳答案

仅当测试属于框架库时才会发生这种情况。
  在应用程序中运行时,以下测试似乎可以正常工作。


当您将默认值发送到后台时,它会自动同步默认值。测试不会发生这种情况。尝试添加:

prefs.synchronize()

关于swift - 为什么我不能 swift 删除NSUserDefaults键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35710828/

10-15 19:06