【问题标题】:use of undeclared identifier semantic issue使用未声明的标识符语义问题
【发布时间】:2012-08-14 23:44:44
【问题描述】:

我在这个错误中是堆栈使用未声明的标识符不同的常见错误,有时很容易修复,但无论如何我都是堆栈,可能我看错了。

我正在尝试做一个日志,人们可以在其中写下他们想要的内容并保存在 plist 中。

从我将显示所有保存的文件的 tableView 中,我将推送到 xib 视图,人们可以在其中填写字段。我已经导入了新的 .h 和我定义密钥的 .h。

出现错误的地方。

- (void) viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    name.text = [bookLog objectForKey:NAME_KEY];
    placeTextView.text = [bookLog objectForKey:PLACE_KEY];
    file1TextView.text = [bookLog objectForKey:FILE1_KEY];
    file2TextView.text = [bookLog objectForKey:FILE2_KEY];
 }

bookLog 有 4 个错误,每行有 1 个错误,name.text、placeTextView.text、file1TextView.text、fileTextView.text 有 1 个错误。

有什么想法吗?

谢谢

【问题讨论】:

  • 你能发布名称、placeTextView 等的声明吗?我的猜测是你将它们声明为 \@property's,然后用别名合成它们,就像这样 \@synthesize name=_name ;
  • 嗨 Dahn .. .h { NSDictionary *bookLog; IBOutlet UITextField *name; IBOutlet UITextView *placeTextView; IBOutlet UITextView *file1TextView; IBOutlet UITextView *file2TextView; } \@property (nonatomic, 保留) NSDictionary *bookLog; \@property (nonatomic, 保留) UITextField *name; \@property (nonatomic, 保留) UITextView *placeTextView; \@property (nonatomic, 保留) UITextView *file1TextView; \@property (nonatomic, 保留) UITextView *file2TextView; \@end --- .m \@synthesize bookLog, name, placeTextView, file1TextView, file2TextView;
  • 嗯。我认为您在问题或评论中发布的内容没有任何问题。它可能需要查看整个 .m 和 .h。你能在某个地方发帖(比如pastebin)吗?
  • 嗨 Danh.. 我已经在 ((past bin)) 上发布了.. 问题标题和这里一样,我的昵称也一样.. 提前谢谢
  • 抱歉,我找不到。你能把链接贴在这里吗?

标签: iphone ios5 xcode4 xcode4.3


【解决方案1】:

我认为这是因为您没有合成您正在谈论的属性.m 它只是说@synthesize data1; 当它应该合成您有错误的所有属性时。 (@synthesize placeTextView; @synthesize...also,当您应该在 .m 中声明时,您在 .h 文件中进行了声明

【讨论】:

    【解决方案2】:

    您在diveLogTable.m 中引用的属性不是diveLogTable 类的成员,因此当您在此处提及它们时,编译器会将它们视为未定义。它们在diveLogDetails 类中公开定义,因此可以在那里访问它们(或通过为它们询问该类的实例)。

    未编译的代码可以移到diveLogDetails 类中。当 那个 视图控制器的视图出现时,这是您想要做的(设置 UIControls)。它会在那里编译,而且在那里似乎很有意义。

    在我看来,您在diveLog 字典中保存了一些diveLog 信息,并且您希望将这些数据呈现给用户并允许通过diveLogDetails 类进行编辑(通常以大写字母开头的类名和使用该后缀命名视图控制器,例如:DiveLogDetailsViewController)。

    diveLogDetails 类的diveLog 字典是唯一应该公开的属性。当您创建diveLogDetails VC 时,按照您的方式设置字典。

    让diveLogDetails 从字典中读取值,设置它的UIControls,当用户更改控件的值(并点击保存或其他)时更改字典值。返回diveLogTable 后,最新值将在字典中。

    【讨论】:

    • 您好 Danh,错误消失了很好。甚至感谢有关常规内容的提示。我完成了程序,我没有任何错误但我的程序没有保存数据,可能是我之前搞砸了一些东西。现在我将再次检查一切。如果我无法修复我的项目,如果我再次打扰您寻求您的帮助是不是太过分了。如果您不同意,我会理解的,可能您已经忙于工作了。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2012-09-16
    • 2021-05-04
    相关资源
    最近更新 更多