我正在尝试将URL作为参数传递给TTURLMap,如下所示:
[map from@"tt://person/(initWithURL:)" toViewController:
[PersonViewController class]];
然后我有一个TTStyledTableItemCell,其链接如下所示:
<a href="tt://person/http://persons.url.com/blah">Person name</a>
但是当我点击这些链接时,该链接不会调用initWithURL: PersonViewConroller类中的方法。我已经验证过了 通过传入一个简单的字符串正确连接。我相信这一点 因为解析器认为URL是其中的一部分,所以无法正常工作 TTURLMap网址映射。有没有办法逃脱这个人的饲料网址 (它是我需要用来提取信息的休息服务)?
提前多多感谢。答案 0 :(得分:5)
这是一个常见问题。我还没有找到一个优雅的解决方案;我能找到的最好的方法是在途中手动转义URL(例如通过Base64编码),然后在initWithURL:
函数内手动取消它。 (实际上,为了清楚起见,你可能想要一个名为initWithBase64EncodedURL:
的函数或类似的函数。)
答案 1 :(得分:1)
我认为TTURLMap绊倒的唯一字符是/
字符,所以以下为我做了诀窍。只需在迈克建议进出init函数的方式中调用它们
+ (NSString *)encodeTtUrl:(NSString *)str {
NSMutableString *temp = [NSMutableString stringWithString:str];
[temp replaceOccurrencesOfString:@"/" withString:@"__" options:NSLiteralSearch range:NSMakeRange(0, [temp length])];
return [NSString stringWithString:temp];
}
+ (NSString *)decodeTtUrl:(NSString *)str {
NSMutableString *temp = [NSMutableString stringWithString:str];
[temp replaceOccurrencesOfString:@"__" withString:@"/" options:NSLiteralSearch range:NSMakeRange(0, [temp length])];
return [NSString stringWithString:temp];
}