Reputation:
I'm having trouble using NSUserDefaults
with suiteName
in Xcode 6.1. This code worked previously, but now there is a Swift Compiler Error.
var userDefaults = NSUserDefaults(suiteName: "group.com.example.myAppGroup")
userDefaults.setObject("test", forKey: "test")
Swift Compiler Error: NSUserDefaults? does not have a member named 'setObject'
When using standardUserDefaults()
, it works as expected:
var userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject("test", forKey: "test")
I'm not sure what I'm doing wrong when using suiteName
.
Upvotes: 0
Views: 620
Reputation: 42335
NSUserDefaults(suiteName:)
returns an optional 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")
}
Upvotes: 0
Reputation: 17500
That's because NSUserDefaults(suiteName:)
returns an optional, as it says in the error message.
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
Upvotes: 0