[英]Trouble using NSUserDefaults with suiteName in Xcode 6.1 (Swift)
I'm having trouble using NSUserDefaults
with suiteName
in Xcode 6.1. 我在Xcode 6.1
NSUserDefaults
与suiteName
一起使用时遇到麻烦。 This code worked previously, but now there is a Swift Compiler Error. 这段代码以前可以运行,但是现在出现了Swift编译器错误。
var userDefaults = NSUserDefaults(suiteName: "group.com.example.myAppGroup")
userDefaults.setObject("test", forKey: "test")
Swift Compiler Error: NSUserDefaults? does not have a member named 'setObject'
Swift编译器错误:
NSUserDefaults? does not have a member named 'setObject'
NSUserDefaults? does not have a member named 'setObject'
When using standardUserDefaults()
, it works as expected: 使用
standardUserDefaults()
,它可以按预期工作:
var userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject("test", forKey: "test")
I'm not sure what I'm doing wrong when using suiteName
. 我不确定使用
suiteName
时我做错了什么。
That's because NSUserDefaults(suiteName:)
returns an optional, as it says in the error message. 这是因为
NSUserDefaults(suiteName:)
返回一个可选,如错误消息中所述。 So to fix, either you set your object this way: 因此,要解决此问题,可以通过以下方式设置对象:
userDefaults?.setObject("test", forKey: "test") // note the ? mark
or extract the value immediately from the initializer: 或立即从初始化程序中提取值:
var userDefaults = NSUserDefaults(suiteName: "group.com.example.myAppGroup")! // note the ! mark
NSUserDefaults(suiteName:)
returns an optional NSUserDefaults
. NSUserDefaults(suiteName:)
返回一个可选的NSUserDefaults
。 You should use optional binding to make sure it's valid and unwrap it before using it: 您应该使用可选绑定来确保其有效,并在使用前将其拆开:
if let userDefaults = NSUserDefaults(suiteName: "group.com.example.myAppGroup") {
userDefaults.setObject("test", forKey: "test")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.