【问题标题】:'Int' is not identical to 'String' - Swift'Int' 与 'String' 不同 - Swift
【发布时间】:2014-11-04 15:41:31
【问题描述】:

在这个函数中,我试图从 UIDatePicker 中获取数据并从中减去 5。例如,如果在 UIDatePicker 中表示上午 7:15,它将从小时数中减去,即为上午 2:15。修改后的代码在我将其提供给标签的行上不起作用,错误显示 'Int' 与 'String' 不同。工作代码是原始版本,无论我在日期选择器中输入什么,它都会显示用户选择的日期,因此如果上午 7:15,它将显示为上午 7:15,而不会减去任何内容。

与故事板挂钩的日期选择器

@IBOutlet weak var theDatePicker: UIDatePicker!

不带 .toInt() 的原始代码

func handler(sender: UIDatePicker) {
        var timeFormatter = NSDateFormatter()
        timeFormatter.timeStyle = NSDateFormatterStyle.ShortStyle

        var strDate = timeFormatter.stringFromDate(theDatePicker.date)

        hoursLeftLabel.text = strDate

    }

修改后的代码

func handler(sender: UIDatePicker) {
        var timeFormatter = NSDateFormatter()
        timeFormatter.timeStyle = NSDateFormatterStyle.ShortStyle

        var intDate = timeFormatter.stringFromDate(theDatePicker.date).toInt()

        hoursLeftLabel.text = intDate

    }

如果您有任何问题或需要任何澄清,请在下方评论

【问题讨论】:

  • 编译器错误信息不是尽可能的清楚吗?您将 Int 分配给 String 属性。
  • 那你怎么能减去一个数字; 5 来自 UIDatePicker?
  • 提示:theDatePicker.date 代表什么?如何修改此值以表示早于 5 小时的日期? – 提示 #2: meta.stackoverflow.com/questions/261592/….
  • @MartinR 它代表当时 DatePicker 中的任何内容。
  • 那么如何表示日期/时间?

标签: ios xcode swift datepicker


【解决方案1】:

尝试使用:

 hoursLeftLabel.text = "\(intDate)"

这应该可以工作,因为您创建了一个包含 int 日期的字符串。

错误 Int is not same to string 表示您正在传递一个需要字符串的 Int。错误确实可能更精确,比如说错误的类型或类似的东西

编辑: 我建议您像这样进行日期计算:

let newDate = theDatePicker.date.dateByAddingTimeInterval(-5*60*60) //-5 Hours
//now you can display your date like this:
hoursLeftLabel.text = timeFormatter.stringFromDate(newDate)

【讨论】:

  • 如何使它成为 UIDatePicker - 现在的时间,即“(startHours):(startMinutes):(startSeconds)”
  • 看看 NSDateComponents
猜你喜欢
  • 2015-01-13
  • 1970-01-01
  • 2014-10-09
  • 2014-10-16
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
相关资源
最近更新 更多