0

我有以下代码 - 注意它必须是带有 temp 的对象,但我会解释。

NSString *temp =  _passedOnURL;
NSString *temp = @"http://google.com"; //I comment the one out that I do not use.

NSLog(@"TEMP - %@", temp);

NSURL *feedURL = [NSURL URLWithString:temp];
NSLog(@"FEED URL - %@", feedURL);

_passedOnURL 是一个字符串,其内容是从 Segue 传递的。

现在,当我使用第一个 temp 时,FEED URL 返回(null),但是当我记录 Temp 时它仍然存在,所以不知何故 NSURL 不读取字符串。

当我用第二个温度对字符串进行硬编码时 - 没有问题。

在我看来,NSURL 在读取 NSString 时没有区别,但它的行为似乎有所不同。

这有什么原因吗??

编辑

当我执行以下代码时,我没有问题:

_passedOnURL = @"http://www.google.com";

所以我真的对此没有任何解释???

4

4 回答 4

2

尝试转义它: [NSURL URLWithString: [temp stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding]]

于 2012-12-06T02:21:00.390 回答
2

看来您在 temp.xml 中存储了一个无效的 url 字符串。不是每个字符串都可以转换为 url,而是有效的 url。无效的字符和格式将在 +URLWithString: 之后引导一个 nil 对象。那么当你尝试这个时,你会告诉我们什么存储在 temp 中吗?

于 2012-12-06T02:20:05.843 回答
1

根据URLWithString 的文档:

参数
URLString

用于初始化 NSURL 对象的字符串。必须是符合 RFC 2396 的 URL。此方法根据 RFC 1738 和 1808 解析 URLString。

返回值

一个用 URLString 初始化的 NSURL 对象。如果字符串格式错误,则返回 nil。

所以我的猜测是你_passedOnURL的 URL 不是有效的。

于 2012-12-06T02:19:10.647 回答
0

我会在你的 _passedOnURL 上做一个 NSLog 来检查你是否从另一个 segue 正确地获取了字符串。

于 2012-12-06T01:58:21.267 回答