2

我正在尝试将 NSString 地址对象传递给 UILabel 文本,但我收到了来自 XCode 编译器的关于不兼容指针的警告,如下面的屏幕截图所示:

不兼容的指针类型警告 - 屏幕截图

从下面的屏幕截图中,您可以看到我的地址对象被声明为 NSString。

属性类型 - 屏幕截图

我曾尝试用以下方式显示我的 NSString:

    NSLog(@"%@",[[LocationData objectAtIndex:rowDisplay] address]);

并且它没有任何不兼容的指针错误。有人可以帮忙吗?我已经做了一些研究,但我仍然找不到任何解决方案。

我的地址是一个存储到 NSArray 中的对象。地址格式始终相同,例如“542 W 112 St New York NY 10025”。

谢谢。

4

2 回答 2

4

这可能是因为address在某些 SDK 类中已经调用了一个方法/属性,并且它恰好返回了NSData *.

NSArray'sobjectAtIndex:返回一个类型的对象,id编译器不知道它是您定义的自定义类addressreturn NSString *。当它尝试匹配address选择器时,它会从 SDK 中获取一个,而不是你的。

但是,您可以将返回的对象强制转换为您的类并address调用您的方法:

[(YourClass *)[LocationData objectAtIndex:rowDisplay] address];

address输出到时看不到警告,NSLog因为%@格式同时接受NSString *and NSData *(对于其他类,NSString它实际输出description方法的结果,返回NSString *)。

于 2012-03-03T14:06:16.623 回答
1

您的问题有很多后续问题。但是,您说,您可以显示:

NSLog(@"%@",[[LocationData objectAtIndex:rowDisplay] address]);

那么为什么不将其用于UILabel

self.displayAddress.text =  [NSString stringWithFormat:@"%@"[[LocationData objectAtIndex:rowDisplay] address]];

PS:请不要将图像用于 1 行代码。我必须在这里重新输入您的代码...

于 2012-03-03T14:17:19.180 回答