在Xcode 6.1(Swift)中使用带有suiteName的NSUserDefaults时出现问题

时间:2014-10-21 03:49:22

标签: xcode swift

我在Xcode 6.1中使用NSUserDefaultssuiteName时遇到问题。此代码以前工作,但现在有一个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时我做错了什么。

2 个答案:

答案 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")
}