Сохранение и загрузка веб-контента

После того, как пользователь редактирует содержание веб-представления, Вам нужен некоторый способ получить доступ к измененному документу. В Какао основанное на документе приложение Вы обычно позволяете пользователю сохранять и загружать документ.

Например, в Миниприложении браузера расположился в /Developer/Examples/WebKit, Вы реализовали бы MyDocument dataRepresentationOfType: метод для возврата представления NSData источника HTML. Тогда реализуйте MyDocument loadDataRepresentation:ofType: метод, чтобы преобразовать представление NSData источнику HTML и загрузить его в веб-представление. Выполните эти шаги для добавления сохранения и загрузки в Миниприложение браузера.

  1. Сначала добавьте переменную и средства доступа к MyDocument для хранения источника HTML. Изменить MyDocument.h следующим образом и реализация соответствующие методы доступа в MyDocument.m:

    @interface MyDocument : NSDocument
    {
        ...
        // Editing Support
        NSString *_source;
    }
    ...
    // Editing Support
    - (NSString *)source;
    - (void)setSource:(NSString *)webContent;
    @end
  2. Затем, реализуйте 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];
    }
  3. Тогда реализуйте 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;
    }