我在Xcode 6.1中使用NSUserDefaults
和suiteName
时遇到问题。此代码以前工作,但现在有一个Swift编译器错误。
var userDefaults = NSUserDefaults(suiteName: "group.com.example.myAppGroup")
userDefaults.setObject("test", forKey: "test")
Swift编译器错误:NSUserDefaults? does not have a member named 'setObject'
使用standardUserDefaults()
时,它按预期工作:
var userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject("test", forKey: "test")
我不确定在使用suiteName
时我做错了什么。
答案 0 :(得分:0)
那是因为NSUserDefaults(suiteName:)
返回一个可选项,如错误消息中所述。
所以要修复,要么以这种方式设置对象:
userDefaults?.setObject("test", forKey: "test") // note the ? mark
或立即从初始化程序中提取值:
var userDefaults = NSUserDefaults(suiteName: "group.com.example.myAppGroup")! // note the ! mark
答案 1 :(得分:0)
NSUserDefaults(suiteName:)
会返回一个可选的NSUserDefaults
。您应该使用可选绑定以确保它有效并在使用之前将其解包:
if let userDefaults = NSUserDefaults(suiteName: "group.com.example.myAppGroup") {
userDefaults.setObject("test", forKey: "test")
}