iOS 3.1 上的 NSDateComponents setTimeZone NSInvalidArgumentException

Posted

技术标签:

【中文标题】iOS 3.1 上的 NSDateComponents setTimeZone NSInvalidArgumentException【英文标题】:NSDateComponents setTimeZone NSInvalidArgumentException at iOS 3.1 【发布时间】:2010-12-17 09:11:21 【问题描述】:

[NSDateComponents setTimeZone:] 函数在 ios 3.1 中崩溃,给出 NSInvalidArgumentException。但它在更高的 iOS 版本上运行良好。有没有人对此有解决方案? 提前致谢。

【问题讨论】:

【参考方案1】:

此方法(公开)仅从 4.0 操作系统开始可用,因此您不得在 3.x 操作系统上调用该方法 - 在调用它之前执行运行时检查 NSDateComponent 实例是否响应选择器:

NSDateComponents* comps = ...;
if ([comps respondsToSelector:@selector(setTimeZone:)])
    [comps setTimeZone:zone];

【讨论】:

感谢您的快速回复。我还能用什么来设置时区?我需要这个,因为如果我不将时区设置为 UTC 应用程序会将当前时区的间隔添加到小时。例如,如果当前时区是 GMT + 3 并且 NSDate 的小时是 20:00,则它变为 23:00。 我不知道如何解决这个问题......还有其他几个地方可以设置时区 - 在 NSDateFormatter 中用于输出,在 NSCalendar 中,在 NSTimeZone 中 +setDefaultTimeZone - 可能正在使用一些其中将服务于您的目的 我也在 NSCalendar 设置了时区,但没有解决。无论如何,谢谢。

以上是关于iOS 3.1 上的 NSDateComponents setTimeZone NSInvalidArgumentException的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 3.1 在 iOS6 上的 Safari 中打开链接

Facebook iOS SDK 3.1 使用分数(游戏 API)

IOS 应用程序上的 Facebook SDK 错误

更新到 iOS 9.3.1 后无法通过 iTunes 安装 .ipa

Facebook SDK 3.1 - 验证访问令牌时出错

Rails 3.1 & RestKit 0.9.3 - 引用映射