On Nov 14, 2015, at 10:18 , Alex Hall <mehg...@icloud.com> wrote:
> 
> In a playground, accessing a dictionary of [String:Bool] works fine, as 
> expected. In the app, though, I get an error that I can't index [String:Bool] 
> with type 'String'. I don't understand why that is, so wanted to see if there 
> was anything special about what UserDefaults returns. In the header file it's 
> just an optional dictionary, and my 'if let' takes care of that. I'm not sure 
> why else my code would error out right there, though. I haven't played much 
> with user preferences before, so I may well be missing something, but it 
> seems easy enough to use and there shouldn't be anything funny going on. Any 
> thoughts? Thanks!

You’ve got the types wrong. ‘dictionaryForKey’ returns type [String: 
AnyObject]?, which means — once you’ve stripped the optionality off it — that 
you’re trying to assign from AnyObject to Bool. The error message is confusing, 
because it seems to be saying that your key isn’t a string, but what it 
actually means is that a subscripting operator taking a String key and 
returning a Bool doesn’t exist in class [String: AnyObject], and that’s quite 
true.

You should probably file a bug report about the crappy error message. To fix 
your code you can do something like:

        someFilterSwitch.on = filter[someCategory.rawValue] as! Bool

or downcast the dictionary itself to [String: Bool].
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to