【问题标题】:Method "not available on iOS"方法“在 iOS 上不可用”
【发布时间】:2013-09-25 12:39:19
【问题描述】:

我听说NSCalendar 上的一个功能已在 iOS7 中引入。

查看文档并找不到它。 OS X 文档中也没有。

函数是- (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 toUnitGranularity:(NSCalendarUnit)unit,即这两个日期是否在同一天/同一周/一个月等...

但是,当我尝试在 Xcode 5 中使用它时。AutoComplete 以红色删除线显示它,然后当我实际使用它时,我收到此错误...

这很奇怪,因为该功能显然在那里我无法使用它。

谁能解释为什么会这样?

【问题讨论】:

    标签: ios objective-c nsdate nscalendar


    【解决方案1】:

    很遗憾,它不适用于 iOS,仅适用于 OS X 10.9。你总是可以欺骗rdar://14995171 告诉苹果你也想要它用于iOS。

    如果您查看 iOS 7 SDK 中的 NSCalendar.h,您会看到这些方法被标记为自 __NSCALENDAR_COND_IOS_7_0 以来可用,如果您查看同一文件的顶部,则定义为

    #if !defined(__NSCALENDAR_COND_IOS_4_0)
    #if NS_ENABLE_CALENDAR_NEW_API
    #define __NSCALENDAR_COND_IOS_4_0 4_0
    #define __NSCALENDAR_COND_IOS_5_0 5_0
    #define __NSCALENDAR_COND_IOS_6_0 6_0
    #define __NSCALENDAR_COND_IOS_7_0 7_0
    #else
    #define __NSCALENDAR_COND_IOS_4_0 NA
    #define __NSCALENDAR_COND_IOS_5_0 NA
    #define __NSCALENDAR_COND_IOS_6_0 NA
    #define __NSCALENDAR_COND_IOS_7_0 NA
    #endif
    #endif
    

    当前计算结果为 NA,这意味着这些方法对 iOS“不可用”。

    【讨论】:

    • @Fogmeister 我也是(因此是原始雷达)
    • 嘿,我想我会为您指明我博客的方向。我刚刚在 NSDate 上创建了一个以完全相同的方式工作的类别...oliverfoggin.com/nsdate-isequaltodatetounitgranularity希望你觉得它有用。
    • @Fogmeister 不错。是否有我在某处看不到的 RSS 按钮?
    • 谢谢,我尝试添加一个,但由于某种原因它似乎不起作用:(
    【解决方案2】:

    您从哪里听说过这种方法?该方法可能在 iOS 7 的 beta 版本中被移除。

    它是私有 API:__NSCFCalendar.h

    【讨论】:

    • 几天前我看到一条推文。这就说得通了。哦,好吧,我想我们必须再等一会儿才能使用它。多么棒的方法,无法使用。 :(
    • 在 NSHipster 的关于 iOS 7 的文章的缓存版本中,有一个对该方法的引用 (webcache.googleusercontent.com/search?q=cache:http://…),但它已被删除。该方法很可能已在 iOS 7 的一个测试版中公开,并且可能会在未来的版本中重新出现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多