为什么我的NSString为null?

时间:2014-04-14 20:44:16

标签: ios objective-c nsstring

我阅读了有关此主题的几个主题,但我无法解决我的问题。请帮我。我想我解决问题太愚蠢了。

我的问题:我有一个ViewController,我使用故事板 - 我创建了一个NNString属性 - NSString获取一个值 - 然后我想用NSLog打印出NSString,但我总是得到值null

感谢您的帮助,对不起这个愚蠢的问题感到抱歉。这是我的代码的一小部分,因为我认为整个代码很长时间在这里发布。

ViewController.h

   @property (nonatomic, retain) NSString *loggedinID;

ViewController.m

   @synthesize loggedinID,
   ... 

IBAction的第一种方法

   loggedinID = [jsonData objectForKey:@"id"] ;

现在另一种方法是IBAction,我想要使用属性

    NSLog(@"%@", loggedinID);

3 个答案:

答案 0 :(得分:0)

就像评论中的人说的......首先摆脱这个@synthesize的事情。当您声明属性时,编译器会自动为您执行此操作。从现在开始,您应该通过 mutators (setter和getter)访问您的房产

self.loggedinID = [jsonData objectForKey:@"id"]; // Calling setter
[self.loggedinID stringWithString:[jsonData objectForKey:@"id"]]; // Seeter as well

_loggedinID = [jsonData objectForKey:@"id"]; // ivar
[_loggedinID stringWithString:[jsonData objectForKey:@"id"]]; // ivar as well

这是通过mutators访问您的属性的好方法。对我来说,使用ivar的唯一好处是初始化器。

其次,检查这个jsonData ...这可能是你的字符串属性中的null问题。

最后,在开始时,您已宣布@propertyloggedinID,之后您尝试记录loggedinFirstName

答案 1 :(得分:-1)

首先:您不再需要synthesize

回答你的问题:你正在记录另一个变量。

loggedinFirstName != loggedinID

答案 2 :(得分:-1)

不要在ARC中使用@synthesize。尝试通过将self添加到字符串变量中来设置值。

您也可以将字符串STRONG而不是RETAIN。

由于