iOS使用HTML链接获取数据

时间:2011-09-26 05:43:36

标签: ios cocoa-touch core-data uiwebview

我正在创建一本用于学习语言的交互式书籍。它有阅读,测验和一些简单的游戏。每章的内容都是一个HTML文件。该书允许用户了解文本中存在的大约300个单词。 Earch字被包含在这样的链接中:< a href =“word”> word< / A>当用户触摸链接时,会出现一个模态视图,其中包含有关该单词的翻译和信息。

这是我用来获取链接的代码:

- (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在DB中搜索该单词。 HTML是UTF-8编码的。我必须能够用不同的语言搜索该单词。因此,如果用户点击单词(日本语)或(简历),我必须能够在数据库中找到它。 对于数据存储,我将CSV文件转换为.sqlite文件。

我想知道是否有更好的方法来做到这一点。我个人不喜欢使用< a href =“”>获取链接,但我找不到任何其他方式来获取链接中的当前单词。在DB中执行该单词的搜索也不干净,因为我没有为每一行使用任何UID。我只是将持有该单词的字符串与DB的相应列中的单词进行比较。

有更有效的方法吗?

要恢复:拥有单词列表,在HTML中标记这些单词,以便用户可以从数据库中触摸并检索有关该单词的信息。

1 个答案:

答案 0 :(得分:0)

一些观察结果:

UID:只要您的文字是唯一的,您就可以将该列用作主键,而无需使用单独的UID。实际上,核心数据无论如何都会为您创建一个,因此您可以使用objectWithID来检索您的单词。

HTML链接:您的UIWebView解决方案,HTML文件和链接对我来说似乎是可行的。但是,您当然也可以使用UITextView并使用NSRange以编程方式处理选择。这可能会更复杂,但也更“原生”。

委托:如果您想将信息传递回首次展示模型视图控制器的视图(太多的作业!;-)),您只需要一个委托。用

从内部解雇它
[self dismissModalViewControllerAnimated:YES];