Сохранение и загрузка веб-контента
После того, как пользователь редактирует содержание веб-представления, Вам нужен некоторый способ получить доступ к измененному документу. В Какао основанное на документе приложение Вы обычно позволяете пользователю сохранять и загружать документ.
Например, в Миниприложении браузера расположился в /Developer/Examples/WebKit
, Вы реализовали бы MyDocument dataRepresentationOfType:
метод для возврата представления NSData источника HTML. Тогда реализуйте MyDocument loadDataRepresentation:ofType:
метод, чтобы преобразовать представление NSData источнику HTML и загрузить его в веб-представление. Выполните эти шаги для добавления сохранения и загрузки в Миниприложение браузера.
Сначала добавьте переменную и средства доступа к MyDocument для хранения источника HTML. Изменить
MyDocument.h
следующим образом и реализация соответствующие методы доступа вMyDocument.m
:@interface MyDocument : NSDocument
{
...
// Editing Support
NSString *_source;
}
...
// Editing Support
- (NSString *)source;
- (void)setSource:(NSString *)webContent;
@end
Затем, реализуйте MyDocument
dataRepresentationOfType:
метод для получения источника HTML от DOM установите_source
переменная экземпляра, и преобразовывает его в объект NSData следующим образом:- (NSData *)dataRepresentationOfType:(NSString *)aType
{
if (![aType isEqualToString:HTMLDocumentType])
return nil;
[self setSource:[(DOMHTMLElement *)[[[webView mainFrame] DOMDocument] documentElement] outerHTML]];
return [[self source] dataUsingEncoding:NSISOLatin1StringEncoding];
}
Тогда реализуйте MyDocument
loadDataRepresentation:ofType:
метод для преобразования NSData возражает против источника HTML следующим образом:- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType
{
if (![aType isEqualToString:HTMLDocumentType])
return NO;
[self setSource:[[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding]];
[[webView mainFrame] loadHTMLString:[self source] baseURL:nil];
return YES;
}