iOS Использование HTML-ссылок для получения данных - PullRequest
0 голосов
/ 26 сентября 2011

Я создаю интерактивную книгу для изучения языков.В нем есть чтение, викторина и простая игра.Содержимое каждой главы представляет собой файл HTML.Книга позволяет пользователю узнать около 300 слов, которые существуют в тексте.Слово Earch заключалось в ссылку, подобную этой: word , когда пользователь касается ссылки, появляется модальное представление с переводом и информацией об этом слове.

Thisкод, который я использую для получения ссылки:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{   
    // currentWord is the word in the link
    self.currentWord = [[request URL] lastPathComponent];

    // okToCatchLinks is a BOOL that I use to avoid showing the modalview when the page
    // is loaded for the first time.
    if (okToCatchLinks){
        NSLog(@"Ok to catch links!");
        WordViewController *viewController = [[WordViewController alloc] initWithNibName:@"WordViewController" bundle:nil]

        // I did my homework creating the delegate protocol to dismiss the modal view.    
        viewController.delegate = self;

        // This is a label in the modalview showing the word in the HTML link.
        viewController.labelTitle = self.currentWord;

        // Create a Navigation controller to add the "DONE" dismiss button
        UINavigationController *navController = [[UINavigationController alloc]
                                             initWithRootViewController:viewController];
        navController.modalPresentationStyle = UIModalPresentationFormSheet;
        navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

        // show the navigation controller modally
        [self presentModalViewController:navController animated:YES];

        // Clean up resources
        [navController release];
        [viewController release];
    }
    okToCatchLinks = YES;
    return YES;
}

С этим кодом я получу выбранное слово в строковой переменной.Затем я ищу это слово в БД, используя CoreData.HTML кодируется в кодировке UTF-8.Я должен иметь возможность искать это слово на разных языках.Поэтому, если пользователь нажимает на слово (日本語) или (резюме), я должен быть в состоянии найти его в БД.Для хранилища данных я преобразовал файл CSV в файл .sqlite.

Интересно, есть ли лучший способ сделать это.Лично я не люблю использовать для получения ссылки, но я не смог найти другого способа получить текущее слово в ссылке.Также выполнение поиска этого слова в БД не является чистым, потому что я не использую какой-либо UID для каждой строки.Я просто сравниваю строку, содержащую слово, со словами в соответствующем столбце БД.

Есть ли более эффективный способ сделать это?

Чтобы возобновить: наличие списка слов,пометьте эти слова в HTML, чтобы пользователь мог прикоснуться и извлечь информацию об этом слове из БД.

1 Ответ

0 голосов
/ 26 сентября 2011

Некоторые наблюдения:

UID: Пока ваши слова уникальны, вы можете использовать этот столбец в качестве первичного ключа без использования отдельного UID.На самом деле, Core Data создаст его для вас в любом случае, так что вы можете использовать objectWithID, чтобы получить ваше слово.

HTML-ссылки: Мне кажется возможным ваше решение с использованием UIWebView, HTML-файлов и ссылок.Тем не менее, вы, конечно, можете также использовать UITextView и обрабатывать выборки программно, работая с NSRange.Это, возможно, будет более сложным, но также и более "родным".

Делегат: Вам нужен делегат, только если вы хотите передать информацию обратно в представление, которое впервые представило контроллер представления модели (слишком много домашней работы!Просто отклоните это изнутри с

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