Загрузка веб-страницы в iphone и проверка истории - PullRequest
0 голосов
/ 10 июля 2010

Псевдокод

pageUrl = "http://www.google.com"

if(pageUrl == never Downloaded)
  Download pageUrl
else
{
   Display Saved Version
   Mean while download pageUrl
   When done display new version

}

Как я могу сделать что-то подобное в задаче C для UIWebview? И каков наилучший способ сохранить веб-страницы для этого сценария? PList, SQLite?

1 Ответ

1 голос
/ 10 июля 2010

Plist - лучший способ решить вашу проблему. iPhone / Objective-c может очень быстро получить доступ к файлу plist по сравнению с базой данных SQLite.

Позвольте мне дать вам пример кода.

См. - редактировать Через некоторое время.

Редактировать:

  • Шаги для создания проекта и подключения веб-просмотра
    • Создать новый проект -> Просмотреть приложение на основе.
    • Дайте имя "yourProjName" (до вас, что вы даете)
    • Открыть "yourProjNameViewController.xib"
    • Перетаскивание UIWebView
    • Откройте файл yourProjNameViewController.h
    • Поместите переменную IBOutlet UIWebView *wView;
    • Подключение в конструкторе интерфейсов
  • Шаги для добавления файла списка свойств в ваш проект

    • Развернуть группу ресурсов в дереве проекта
    • Щелкните правой кнопкой мыши "Ресурсы" -> Добавить -> Новый файл
    • Выберите категорию шаблона - osx -> Resource
    • Выберите файл списка свойств
    • Дайте имя файла "LoadedURL.plist"
    • Изменить тип корня на массив
    • Сохранить файл "LoadedURL.plist"
  • Теперь поместите следующий код в файл yourProjNameViewController.m.


#import "yourProjNameViewController.h"
#define documentsDirectory_Statement NSString *documentsDirectory; \
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); \
documentsDirectory = [paths objectAtIndex:0];


@implementation WebViewLoadViewController


- (void)viewDidLoad {
    [super viewDidLoad];
    // your url to load
    NSString *strToLoad=@"http://www.mail.yahoo.com";


    // file management code
    // copy file to documents directory
    documentsDirectory_Statement;
    NSFileManager *fm=[NSFileManager defaultManager];
    if(![fm fileExistsAtPath:[documentsDirectory stringByAppendingPathComponent:@"LoadedURL.plist"]]){
        [fm copyItemAtPath:[[NSBundle mainBundle] pathForResource:@"LoadedURL" ofType:@"plist"] 
                    toPath:[documentsDirectory stringByAppendingPathComponent:@"LoadedURL.plist"]
                     error:nil];
    }

    // array from doc-dir file
    NSMutableArray *ar=[NSMutableArray arrayWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:@"LoadedURL.plist"]];

    // check weather file has url data or not.
    BOOL fileLocallyAvailable=NO;
    NSString *strLocalFileName=nil;
    NSUInteger indexOfObject=0;
    if([ar count]>0){
        for (NSDictionary *d in ar) {
            if([[d valueForKey:@"URL"] isEqualToString:strToLoad]){
                fileLocallyAvailable=YES;
                strLocalFileName=[d valueForKey:@"FileName"];
                break;
            }
            indexOfObject++;
        }
    }
    if(fileLocallyAvailable){
        NSDictionary *d=[ar objectAtIndex:indexOfObject];
        strLocalFileName=[d valueForKey:@"FileName"];
    } else {
        NSMutableDictionary *d=[NSMutableDictionary dictionary];
        [d setValue:strToLoad forKey:@"URL"];

        NSString *str=[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:strToLoad]];

        [str writeToFile:[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%02i.htm",[ar count]]] 
              atomically:YES
                encoding:NSUTF8StringEncoding error:nil];

        strLocalFileName=[NSString stringWithFormat:@"%02i.htm",[ar count]];
        [d setValue:[NSString stringWithFormat:@"%02i.htm",[ar count]] forKey:@"FileName"];
        [ar addObject:d];

        [ar writeToFile:[documentsDirectory stringByAppendingPathComponent:@"LoadedURL.plist"]
             atomically:YES];
    }
    NSURL *u=[[NSURL alloc] initFileURLWithPath:[documentsDirectory stringByAppendingPathComponent:strLocalFileName]];
    NSURLRequest *re=[NSURLRequest requestWithURL:u];
    [wView loadRequest:re];
    [u release];
}

`

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...