使用id代替NSString

时间:2011-05-17 11:09:03

标签: iphone objective-c

我正在解析一些JSON。

有时JSON返回一个NSNull,我允许进入一个字符串,然后我会检查字符串,看它是否与NSNull有关,然后处理它。代码按预期工作,但编译器抱怨警告。

if ((theMonograph.cautions != nil) && (theMonograph.cautions != [NSNull null]))
{   
    //draw string
}

在Monograph.h中

NSString *cautions;
@property (nonatomic, retain) NSString *cautions;

所以我可能正确处理它的方法是更改​​为NSString位置的id

Monograph.h

id *cautions;
@property (nonatomic, retain) id *cautions;

但这仍然会产生另一个警告

  

从不兼容的指针类型

传递'setCautions:'的参数1

处理此问题的正确方法是什么?我猜测让NSNull进入一个NSString对象是错误的。但是将id对象放在其位置似乎没有用。

非常感谢 -code

2 个答案:

答案 0 :(得分:5)

id已经被声明为NSObject的指针,所以摆脱星号:

id cautions;
@propertry (nonatomic, retain) id cautions;

答案 1 :(得分:0)

使用NSString是完美的;只需将条件修改为
if ((theMonograph.cautions != nil) && (theMonograph.cautions != [NSNull null]) && [theMonograph.cautions length])
希望它有效。