我正在尝试将NSString地址对象传递给UILabel文本,但是我收到了来自XCode编译器的关于不兼容指针的警告,如下面的屏幕截图所示:
从下面的屏幕截图中,您可以看到我的地址对象被声明为NSString。
我尝试用以下方式显示我的NSString:
NSLog(@"%@",[[LocationData objectAtIndex:rowDisplay] address]);
它没有任何不兼容的指针错误。有人可以帮忙吗?我做了一些研究,但我仍然找不到任何解决方案。
我的地址是一个存储在NSArray中的对象。地址格式始终相同,例如“542 W 112 St New York NY 10025”。
感谢。
答案 0 :(得分:4)
这可能是由于某些SDK类中已存在名为address
的方法/属性,并且它恰好返回NSData *
。
NSArray
的{{1}}返回objectAtIndex:
类型的对象,编译器不知道它是定义为id
的自定义类,以返回address
1}}。当它尝试匹配NSString *
选择器时,它会从SDK获取,而不是你的。
但是,您可以将返回的对象强制转换为您的类,并将方法address
调用:
address
将[(YourClass *)[LocationData objectAtIndex:rowDisplay] address];
输出到address
时,您看不到警告,因为NSLog
格式同时接受%@
和NSString *
(对于{{1}以外的类1}}它实际输出NSData *
方法的结果,返回NSString
)。
答案 1 :(得分:1)
您的问题有很多跟进问题。但是,你说,你可以用:
显示NSLog(@"%@",[[LocationData objectAtIndex:rowDisplay] address]);
所以为什么不将它用于UILabel
:
self.displayAddress.text = [NSString stringWithFormat:@"%@"[[LocationData objectAtIndex:rowDisplay] address]];
PS:请不要将图像用于1行代码。我必须在这里重新输入你的代码...