On 4 Apr 2013, at 09:18, Stephane Sudre <dev.iceb...@gmail.com> wrote:

> On Thu, Apr 4, 2013 at 5:56 AM, Steve Mills <sjmi...@mac.com> wrote:
>> My screensaver follows examples I've seen as far as creating its defaults in 
>> its initWithFrame method:
>> 
>>    ScreenSaverDefaults*            defaults = [ScreenSaverDefaults 
>> defaultsForModuleWithName:MyModuleName];
>> 
>>    // Register our default values:
>>    fileMan = [[NSFileManager alloc] init];
>> 
>>    NSURL*              defaultURL = [NSURL URLWithString:@"/Applications"];
>>    NSArray*            pictFolders = [fileMan 
>> URLsForDirectory:NSPicturesDirectory inDomains:NSUserDomainMask];
>> 
>>    if(pictFolders != nil && [pictFolders count] > 0)
>>        defaultURL = [[pictFolders objectAtIndex:0] filePathURL];
>> 
>>    [defaults registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:
>>                                defaultURL, kImageFolderPathPrefKey,
>>                                [NSNumber numberWithInteger:NSOnState], 
>> kUsePolaroidBorderPrefKey,
>>                                nil]];
>> 
>> Then later in my startAnimation method I grab that value, but it's nil:
>> 
>>    ScreenSaverDefaults*    defaults = [ScreenSaverDefaults 
>> defaultsForModuleWithName:MyModuleName];
>>    NSURL*                  url = [defaults 
>> URLForKey:kImageFolderPathPrefKey];
>> 
>> I tried calling [defaults synchronize] after registerDefaults, but that 
>> didn't help. I also tried creating a mutable dictionary and adding the url 
>> and integer via setObject:forKey:. No matter which method I use to create 
>> the defaults, I can definitely *see* the url in the defaults object, but it 
>> comes out nil when I ask for URLForKey. If I actually go through the System 
>> Preferences window and set my screen saver's prefs from there, then the url 
>> comes out as a valid value.
>> 
>> What am I doing wrong?
> 
> AFAIK, you can't save a NSURL instance in the defaults/preferences of
> an application using a NSDictionary or NSArray that contain a NSURL
> object. You have to use the setURL: forKey: for it work.
> 
> Personally, I've given up thinking about using NSURL in defaults for a
> screen saver and just use a NSString with the absolute path.

Storing bookmark data is preferable. It allows the app to cope with the item at 
that URL being moved. Additionally, the bookmark can be security-scoped, which 
is very useful to sandboxed apps


_______________________________________________

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