I'm certain this is a trivial error on my part, but my custom document class
will not write the file to the local filesystem. I have several other files
which I can write, and I can write the content when I use an NSString to encode
the text first. But once I init my own document, setup the attributedText and
try to writeToURL: or saveToURL: phht!
"File could not be saved because the specified format is not supported."
This is the passage in my app delegate which drives the save operation in
response to a web page being loaded into a webView:
NSError * error = nil;
self.htmlText = [[NSMutableAttributedString alloc] initWithString:
html];
WebHistoryItem * item = [[webview backForwardList] currentItem];
if( ! [history containsObject:item]) {
[history addObject:item];
}
NSString * urlString = [webview mainFrameURL];
NSString * filename = nil;
if( ! [htmlList itemWithTitle:urlString] )
{
[self configureWorkingSiteFolders:urlString];
if(nil==filename)
{
if( [[[NSURL URLWithString:urlString] relativePath]
isEqualToString:@"/"])
{
filename = [[@""
stringByAppendingPathComponent:@"index"]
stringByAppendingPathExtension:@"html"];
}
else {
filename = [urlString lastPathComponent];
}
}
// instantiate htmlDocument
RSSHTMLDocument * htmlDocument = [[RSSHTMLDocument alloc] init];
[htmlDocument readFromURL:[NSURL URLWithString:urlString]
ofType:NSHTMLTextDocumentType error:&error];
[htmlDocument setTitle:[webview mainFrameTitle]];
NSURL * fileURL = [[[[NSUserDefaults standardUserDefaults]
URLForKey:kRSSProjectDirectoryURL]
URLByAppendingPathComponent:@"index"
isDirectory:NO]
URLByAppendingPathExtension:@"html"];
[htmlDocument saveToURL:fileURL ofType:NSHTMLTextDocumentType
forSaveOperation:NSSaveOperation error:&error ];
if( error ) {
[self presentError:error];
error = nil;
}
[htmlList addItemWithTitle:filename];
}
And here is the custom saveToURL: implementation:
- (BOOL) saveToURL:(NSURL *)url ofType:(NSString *)typeName
forSaveOperation:(NSSaveOperationType)saveOperation
error:(NSError **)outError {
BOOL saveSuccess = NO;
NSString * page = @"";
NSData * data = [attributedText dataFromRange:NSMakeRange(0,
[attributedText length]) documentAttributes:nil error:outError];
if( outError ) {
[NSApp presentError:*outError];
outError = nil;
}
if(!filename) {
filename = [@"unnamed-file"
stringByAppendingPathExtension:@"html"];
}
if(data) {
page = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@ [%04d] %@ %@",[self className],__LINE__,
NSStringFromSelector(_cmd),page);
[page writeToURL:[[[NSUserDefaults standardUserDefaults]
URLForKey:kRSSCSSDirectoryURL]
URLByAppendingPathComponent:filename
isDirectory:NO]
atomically:YES encoding:NSUTF8StringEncoding
error:outError];
if( outError ) {
[NSApp presentError:*outError];
outError = nil;
}
saveSuccess = YES;
}
return saveSuccess;
}
My question I suppose is how do I get saveToURL: to write a plaintext version
of the contents of my class?
TIA,
Erik
_______________________________________________
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]