0

我试图让 IUAlertview 在加载应用程序时显示从网站中提取的自定义消息。我可以控制网站,所以我的想法是如果我想更改消息,我可以更改网站。今天早上我询问如何更新个性化消息,这个想法就是结果,但现在我正在尝试对其进行编码,但我遇到了错误。

在浏览了有关堆栈溢出的其他 initWithContentsOfURL 问题后,我想出了以下代码:

NSStringEncoding *encoding = NULL;
    NSError *error;
    NSString *myHtml = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.gcsp.webuda.com/hi.htm"] usedEncoding:encoding error:&error];

    UIAlertView *message1 = [[UIAlertView alloc] initWithTitle:myHtml
                                                       message:myHtml
                                                      delegate:nil
                                             cancelButtonTitle:@"OK"
                                             otherButtonTitles:nil];
    [message1 show];

我把 with 放入viewWillAppear方法中,当用户打开应用程序时它会触发。但是,UIAlertview 消息和标题是空白的,并且应用程序没有报告任何错误。有人可以帮我弄清楚为什么我的代码不起作用吗?

我真的很感谢帮助!

4

1 回答 1

3

如果您知道网站上文本的编码将始终相同,则可以使用以下方法:

- (id)initWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;

反而。

我还建议在后台执行网络操作:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),
^{
    NSError *error;
    NSString *myHtml = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.gcsp.webuda.com/hi.htm"] encoding:NSUTF8StringEncoding error:&error];

    UIAlertView *message1 = [[UIAlertView alloc] initWithTitle:myHtml
                                                       message:myHtml
                                                      delegate:nil
                                             cancelButtonTitle:@"OK"
                                             otherButtonTitles:nil];

    //UI updates should be on main thread
    dispatch_async(dispatch_get_main_queue(),
    ^{
        [message1 show];
    });
});
于 2013-07-23T01:27:13.607 回答