声明一个带有格式说明符的 NSString 并将其用作在 UIWebview 中打开的 URL

Posted

技术标签:

【中文标题】声明一个带有格式说明符的 NSString 并将其用作在 UIWebview 中打开的 URL【英文标题】:Declare an NSString With Format Specifiers and use it as a URL to open in UIWebview 【发布时间】:2010-12-12 10:27:37 【问题描述】:

我有一个包含数字的 int。我想声明一个NSString,以便在为其赋值时使用格式说明符。

我认为它可能是这样的:

NSString[NSString stringWithFormat] myString;

myString = [@"http://myurl.com/%d",myInt];

我认为情况并非如此,所以问题之一是:我如何声明一个可以处理格式说明符的NSString,然后使用格式说明符为其分配一个值?这个NSString 的目的是保存一个 URL,就像上面的第二行一样。

问题二是,我如何使用这个字符串作为 URL 在UIWebView 中打开? 我假设我使用这样的东西:

[webView 加载请求:

可悲的是,这是我所知道的。有没有办法告诉我的UIWebView(上面的webView)使用NSString 和我之前提到的URL?

我打算将NSString 作为全局变量,因为它将在 C 函数中分配它的值。而“webView”将在一个(我认为是一个)方法中使用它。所有这些代码都在同一个文件中,即 Delegate.m 文件。这一切都在应用程序启动时执行。

【问题讨论】:

【参考方案1】:

你的字符串应该是这样的:

NSString *myString = [NSString stringWithFormat:@"http://myurl.com/%d", myInt];

您错过了什么:添加 * 表示指针,并认为您必须/可以首先声明字符串将具有格式,然后再声明格式。这一切同时发生,创建具有指定格式的字符串。

编辑添加 NSURL

要创建一个 url,你需要创建一个 NSURL 类的对象,如下所示:

NSURL *myURL = [[NSURL alloc] initWithString:myString];

然后你创建 url 请求:

NSURLRequest *request = [NSURLRequest requestWithURL:myURL];

最后,告诉你的 webView 加载请求:

[webView loadRequest:request];

【讨论】:

嗨,马修,非常感谢,效果很好,但我遇到了一个错误。似乎 NSString 在分配 URL 的 C 函数之外是不可访问的。您提供的最后 3 行代码在“didFinishLoadingWithOptions”期间执行。我收到一条错误消息,说 NSString 未声明。有解决方法吗?非常感谢 你是对的,该字符串仅在创建它的方法中可用。现在在哪里声明?【参考方案2】:

对于您的第一部分:

NSString *myString = [NSString stringWithFormat:@"http://myurl.com/%d", myInt];

然后,根据 iphonesdkarticles.com 的教程:

//Create a URL object.
NSURL *url = [NSURL URLWithString:myString];

//URL Request Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

//Load the request in the UIWebView.
[webView loadRequest:requestObj];

【讨论】:

以上是关于声明一个带有格式说明符的 NSString 并将其用作在 UIWebview 中打开的 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何检查NSString格式是否包含与可变参数相同数量的说明符?

iPhone:如何将 NSString 拆分为多行并将其设置为 UILabel? [复制]

NSString 转 JSON 字符串

“NSString”没有可见的@interface 声明选择器“performStringGeocode”

使用带有 printf 的格式字符串打印可变字节数

声明一个带有数组参数的python函数并将一个数组参数传递给函数调用?