【问题标题】:Incompatible pointer types sending 'NSURL *__strong' to parameter of type 'NSString *'不兼容的指针类型将“NSURL *__strong”发送到“NSString *”类型的参数
【发布时间】:2013-02-07 05:46:41
【问题描述】:
NSString *urlString = [NSString stringWithFormat:@"http://shareaspetto.com/share/updateprofile.php?name=%@&gender=%@&email=%@&about_us=%@&id=%@&image=%@", nameString, genderString, emailString, aboutusString, idString, imgNameString];
NSLog(@"urlString = %@", urlString);
while ([urlString rangeOfString:@" "].location != NSNotFound) {
    urlString = [urlString stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
}    
NSString *rplyString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];

当我编译上述代码时出现警告Incompatible pointer types sending 'NSURL *__strong' to parameter of type 'NSString *'

【问题讨论】:

  • wt 是你的警告???请输入正确的代码
  • 您的警告到底在哪里?另外,我对最后一行感到困惑。为什么将字符串传递给 NSURL 只是为了将该 NSURL 传递给 NSString 方法。为什么不只是NSString *rplyString = urlString
  • @Th3Cuber 因为这样rplyString 将与urlString 相同,并且它不会包含位于由urlString 描述的URL 处的数据。跨度>
  • 另外,这是一种 可怕 对字符串进行 URL 转义的方式。试试CFURLCreateStringByAddingPercentEscapes()
  • @NishantShah 你的警告在哪一行?

标签: iphone ios objective-c


【解决方案1】:

带有stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding的隐蔽字符串

NSString *urlString = [NSString stringWithFormat:@"http://shareaspetto.com/share/updateprofile.php?name=%@&gender=%@&email=%@&about_us=%@&id=%@&image=%@", nameString, genderString, emailString, aboutusString, idString, imgNameString];
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
NSLog(@"urlString = %@", urlString);
while ([urlString rangeOfString:@" "].location != NSNotFound) {
    urlString = [urlString stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
}

NSString *rplyString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多