1

我有这个:

    NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults];
    NSString *namestr = [defauts objectForKey:@"savednamestring"];

    NSLog(@"%@",namestr);
    [unusedtext setText:namestr];
    NSLog(@"%@",unusedtext); 
    NSLog(@"%@",unusedtext.text);

现在,首先nslog打印出 的内容namestr,例如“Jack”。

但是第二个nslog和第三个nslog都给出null

当我尝试传递namestr给实体时,它给了我一个unrecognized selector sent to instance错误,我知道这是因为 namestr没有将任何东西传递给实体,而是首先如何nslog打印出来namestr。我是否需要将其转换为某种格式才能使其正常工作?

4

3 回答 3

3

unusedText可能没有初始化。

于 2012-11-22T12:21:21.067 回答
1

我假设未使用的文本是 UILabel。

有几个问题:

  • 您使用的是 Interface Builder 还是 Storyboard?如果是,您是否将 var 与组件相关联?
  • 如果您不使用 IB 或 Storyboard,是否已初始化此“未使用文本”?
  • 你在用ARC吗?如果不是,是不是未使用的文本自动释放?还是在你的代码之前发布?
  • 如果您使用 ARC,未使用的文本是否标记为 STRONG?

希望有所帮助!

于 2012-11-22T13:34:55.283 回答
0

那是因为你还没有初始化 usedtext 变量。

如果是 NSString 则执行此操作

NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults];
NSString *namestr = [defauts objectForKey:@"savednamestring"];

NSLog(@"%@",namestr);
unusedtext = [NSString stringWithString:namestr];
NSLog(@"%@",unusedtext); 
NSLog(@"%@",unusedtext.text);

如果它是一个 UITextView 或 UITextfield 比这样做,而不是!

NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults];
NSString *namestr = [defauts objectForKey:@"savednamestring"];

NSLog(@"%@",namestr);
UITextField *unusedtext = [[UITextField alloc] init];
[unusedtext setText:namestr];
NSLog(@"%@",unusedtext); 
NSLog(@"%@",unusedtext.text);

希望有帮助!

于 2012-11-22T12:25:06.017 回答