NSBundle *bundle = [NSBundle bundleForClass : [self class]];
NSString *f_path = nil;
if ((f_path = [bundle pathForResource : @"about_screen" ofType:@"html" inDirectory:@"html"]) != nil)
{
NSLog(@" f_path found" );
NSString *ns_string = [NSString stringWithContentsOfFile : f_path
encoding : NSUTF8StringEncoding
error : NULL
];
NSLog(@" string = %@", ns_string);
}
else
{
NSLog(@" f_path not found" );
}
// *** if the following assignment is commented off, there will be an error. ***
ns_string =
@"<!DOCTYPE html PUBLIC \"-//IETF//DTD HTML 2.0//EN\"><HTML><HEAD><TITLE>minimal test </TITLE></HEAD><BODY bgcolor = \"silver\"><H1>Hi</H1><P>This is very minimal \"hello world\" test document.</P> </BODY></HTML>";
[web_view loadHTMLString : ns_string baseURL : nil];
考虑上面的代码段。
出于测试目的,我将文件“about_screen.html”的内容设置为与上面代码中分配给 ns_string 的字符串相同。因此,如果“NSString stringWithContentsOfFile”按预期工作,则可以将 ns_string“in-line”赋值注释掉而不会产生任何影响。
我的问题是:内联分配按预期工作,但没有它,将会出现运行时错误。
错误是:
-[About_Screen dataUsingEncoding:]:无法识别的选择器发送到实例 0x6eddf70'
另请注意声明:
NSLog(@" 字符串 = %@", ns_string);
总是输出正确的字符串,所以嵌入的 html 文件被找到并被正确读取。
希望熟悉这方面的人可以提供帮助。