指向整数发送'UITextField * 的不兼容指针

Incompatible pointer to integer sending 'UITextField*

我对 UITextField 有疑问

我希望用户输入 运行 通知的日期,我在 .m

中使用它
  [dateComponent setWeekday:1]; // For sunday
  [dateComponent setHour:timeHClass];
  [dateComponent setMinute:timeMClass];

这在 .h 中

  @property (retain, nonatomic) IBOutlet UITextField *timeHClass;
  @property (retain, nonatomic) IBOutlet UITextField *timeMClass;

但它向我显示了这个警告:

incompatible pointer to integer sending 'UiTextField*__strong' to parameter of type 'NSInteger' (aka 'long')

你应该做的:

[dateComponent setHour:[timeHClass.text integerValue]];
[dateComponent setMinute:[timeMClass.text integerValue]];

您想获取字段中键入的文本并将其与您的日期组件一起使用。

解释:timeHClass 对象是一个 UITextField 所以你想访问它的 text 属性,这是一个 NSString 对象,并且将其转换为 NSInteger 值。您还应该确保您的文本字段是数字。

您正在将 class 的 UITextField 属性设置为小时和分钟组件。这些字段需要整数,就像您对 [dateComponent setWeekday:1];.

所做的一样

您正在尝试发送一个指向 UITextField * 对象的指针作为参数,该参数应该是 NSInteger。尝试:

[dateComponent setHour:[timeHClass.text integerValue]];

但是要非常小心这种类型的转换,用户可能会输入您不想要的内容。您必须事先检查输入文本以避免不可预测的行为。

您必须获取文本字段的内容,而不是文本字段本身:

[dateComponent setWeekday:1]; // For sunday
[dateComponent setHour:[timeHClass.text integerValue]];
[dateComponent setMinute:[timeMClass.text integerValue];