当我运行以下测试用例时,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/