On Jan 6, 2012, at 8:00 AM, Peter Zegelin wrote:

> I am trying to save a bookmark into an xml file but am having difficulty 
> converting the bookmark to and from an NSString.

It seems from the documentation that a "bookmarkData" is an opaque 
representation hold by a NSData object which you can store on disk and read 
from and also recreate an URL from it. An arbitrary NSData object cannot be 
converted *directly* to a string. Think of it as binary data like an image file.

Since you cannot store binary data in XML you may have success converting the 
content of the NSData object to a base64 encoded string and use that string to 
write to your XML.

Unfortunately, there is no System API for a base64 encoder/decoder in 
Cocoa/CoreFoundation. There is third party software, though. If you can't find 
an appropriate base64 encoder/decoder I can you help out, too.


Andreas




> Below is my code. I have temporarily put it all in the NSDocument readFromURL 
> method:
> 
> 
> - (BOOL)readFromURL:(NSURL *)absoluteURL ofType:(NSString *)typeName 
> error:(NSError **)outError{
>             
>       NSData *bookmark = [absoluteURL bookmarkDataWithOptions: 
> NSURLBookmarkCreationSuitableForBookmarkFile
>                             includingResourceValuesForKeys:nil 
> relativeToURL:nil error:NULL];
> 
>       NSURL *url = [NSURL URLByResolvingBookmarkData:bookmark options: 
> NSURLBookmarkResolutionWithoutUI relativeToURL:nil
>                               bookmarkDataIsStale:NULL error:NULL];
> 
>       [model newFile:[url path]];
> 
> // The above works. The following however doesn't:
> 
>       NSString *str = [[NSString alloc] initWithData:bookmark 
> encoding:NSUTF16StringEncoding];        
> 
>       NSData  *data = [str dataUsingEncoding:NSUTF16StringEncoding];
>           
>       url = [NSURL URLByResolvingBookmarkData:data options: 
> NSURLBookmarkResolutionWithoutUI relativeToURL:nil
>                                   bookmarkDataIsStale:NULL error:NULL];
> 
>       // url is nil here
> 
>     [model newFile:[url path]];
> 
>    return YES;
> }
> 
> In the second part I am simply trying to convert the bookmark to and from a 
> string, but it fails. I have tried several encodings - NSUTF8StringEncoding, 
> NSUnicodeStringEncoding but no luck.
> 
> Can anyone point out what I might be doing wrong?
> 
> Thanks!
> 
> Peter_______________________________________________
> 
> Cocoa-dev mailing list ([email protected])
> 
> 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:
> http://lists.apple.com/mailman/options/cocoa-dev/agrosam%40onlinehome.de
> 
> This email sent to [email protected]

_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to