“使用未声明的标识符”

时间:2014-03-25 00:04:20

标签: ios objective-c properties nsstring uitextfield

我对Objective C很新。继续收到此错误

"Use of undeclared identifier"

这段代码:

NSString *textOut1 = textOut.text;

显然我只是想拉动文本框文本。我在我的文件

中声明了以下内容
@property (weak, nonatomic) IBOutlet UITextField *textOut;

所以我无法理解为什么我一直得到那该死的错误。谢谢!

4 个答案:

答案 0 :(得分:4)

使用此:

NSString *textOut1 = _textOut.text;

查看我在textOut

前面添加的额外下划线

阅读this苹果文档页面中标题为大多数属性由实例变量支持的段落。

答案 1 :(得分:3)

要访问变量textOut引用的对象的属性someVariable,请编写someVariable.textOut。因此,要访问textOut对象的属性self,请编写self.textOut。在这种情况下,您省略了所有者 - self

答案 2 :(得分:2)

如果你不是(@synthesize)自己合成属性,那么它将与名称开头有一个Underscore的实例变量合成。

尝试:

NSString *textOut1 = _textOut.text;

答案 3 :(得分:2)

self.textOut.text就是您所需要的。

属性基本上类似于Java中的类变量,需要使用公共getter和setter。所以你不能直接在.m文件中使用它,但需要使用getter和setter。 iOS上的Objective C实际上为您提供了这些方法。因此,当您创建一个属性时,您可以使用自己执行getter和setter的代码。

您可以将值设置为:

_textOut = BLAHBLAH

得到它:

[self textOut.text] 


    self.textOut.text

甚至是_textOut.text(这在技术上是textOut引用的局部变量)

或者在你的情况下,

`NSString *textOut1 = [self textOut.text];`

NSString *textOut1 = self.textOut.text;

NSString *textOut1 = _textOut.text; //这可能是最不推荐的。

虽然我相信斯坦福大学的班级表示做[self textOut]总是更好。