- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是 a calendar library for iOS 的作者,我正在考虑如何改进它,因为很明显人们不理解它。
现在,我有一个只包含一个方法的数据源协议(protocol),它返回要在给定日期显示的事件:
- (NSArray *)calendarView:(CKCalendarView *)calendarView eventsForDate:(NSDate *)date;
但是,我发现在图书馆可用的两年里,我收到的大部分反馈都是“如何让事件出现在日历上?”
我一直认为它很直观:
我还能做些什么来让其他开发人员更清楚我打算如何工作?
最佳答案
您的用户想要她可以复制和粘贴然后编辑以解决她的问题的代码。她不想阅读有关接口(interface)的信息,然后从头开始实现它。因此,将 CKCalendarViewDataSource
的玩具实现放在您的文档中。玩具实现需要开箱即用。您的用户应该能够将其粘贴到她的项目中、编译并在日历 View 中查看事件。玩具可以只使用一组硬编码的事件(根据需要调用 [NSDate now]
以确保默认日历月显示事件)。
我认为在 README 中提供一个工作示例实现最能减轻您的支持难题。
您的用户不想实现回调。她不考虑等待回答问题;她的想法是告诉您的图书馆该做什么。
将 events
属性添加到 View ,它是 CKCalendarEvent
的数组。让用户设置 events
或 dataSource
。在文档和 header 注释中注意,如果有超过几十个事件,您建议使用 dataSource
。如果用户同时设置两者,则引发异常。
如果您不断被问到“如何让事件显示在日历上?”然后将该语言放入您的文档中。在您的文档中出现冗余是可以的!文档是为人类准备的,人类需要冗余。
你可以有很大的部分标题,上面写着“如何将事件添加到日历”、“如何在日历上显示事件”和“如何使事件出现在日历上”,它们都可以说同样的话(最好使用示例代码)或只是链接到“显示事件”部分。
在您的文档中解释,靠近顶部,CKCalendarView
需要一个数据源,就像 UITableView
一样。要明确!你我都认识这种模式,但显然你的用户不认识。
提供更好的数据源接口(interface)。通过 NSDate
查找事件并不是很理想,因为 NSDate
指定的是一个瞬间,而不是一整天。您想要发生在给定日历日的事件,但您不关心事件发生的时间。你是在感兴趣的那一天的午夜吗?如果事件在上午 8 点举行怎么办?更糟糕的是,如果事件发生在第二天凌晨 12:01,并且夏令时从感兴趣的那一天开始怎么办?并非所有的日子都是 86,400 秒!不要让你的用户乱用 NSCalendar
;为她做。
我更喜欢这样的消息:
- (NSArray *)calendarView:(CKCalendarView *)calendarView
eventsOnOrAfterDate:(NSDate *)startingDate
beforeDate:(NSDate *)endingDate;
通过 startingDate
感兴趣日期的午夜 ( or 1 AM on certain days in certain time zones )。 endingDate
为次日午夜。请注意,您应该允许用户指定用于计算这些 NSDate
的日历时区(但默认为 [NSTimeZone systemTimeZone]
)。
最好还指定以下消息,以防您的用户按日历日而不是使用精确的时间戳存储她的事件:
- (NSArray *)calendarView:(CKCalendarView *)calendarView
eventsForYear:(int)year month:(int)month day:(int)day;
关于ios - 我怎样才能改进这个涉及 NSDate 比较的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26199501/
我的应用程序中有两个 UIDatePicker 控件,一个配置了 UIDatePickerModeDate,另一个配置了 UIDatePickerModeTime。 我想配置一个 NSDate 对象,
我可以通过此代码获取 iPhone 的当前日期 NSDate *currentDate = [NSDate date]; NSDateFormatter *dateFormatter1 = [[NSD
我在 Swift 中有一个模型,它有一个名为 expirationDate 的 NSDate 字段,我想根据当前时间计算过期前的剩余小时数日期。 有没有一种简单的方法可以利用现有的 NSDate 功能
我将我的 NSDate 存储到一个文件中,该文件采用您在 NSDate 上调用描述时获得的国际格式。 但是,我不知道如何从字符串格式返回到 NSDate 对象。 NSDateFormatter 似乎仅
我有兴趣创建一种方法来查找当前日期是否落在任何给定日期的特定时间之间。这是一个调度程序,所以我想找到当前时间正在发生什么事件。每天都有相同的时间集:820-900、900-940、940-1020 等
我有一个约会时间: Friday, July 8, 2016 at 6:30:00 PM India Standard Time 我想要这样的约会时间: Friday, July 8, 2016 at
我有一个 NSDate 对象。假设它代表“1-10-2011” NSDate *date = [df dateFromString:@"2011-10-01 00:00:00"]; 由于我所在的时区,
我从 Django API 获取 NSString 2012-08-17T10:56:45.508205 作为时间。 我正在尝试使用以下代码将该字符串转换为 NSDate 对象: NSDateForm
我在获取一系列 NSDates 与另一个 NSDates 范围相交的天数时遇到问题。 场景 1: 主要范围:3月8日-6月8日 检查范围:4月8日-5月8日 那么相交的天数就是4月8日-5月8日的天数
我知道如何获取两个 NSDate 之间的差异,如下所示 NSTimeInterval timeInterval = [[NSDate date] timeIntervalSinceDate:anyPr
我需要根据另一个 NSDate 获取一天中特定时间的 NSDate。例如,如果我有一个代表 2015 年 5 月 10 日已知时间的 NSDate,我需要能够获得一个代表 2015 年 5 月 10
升级到1.2后出现编译错误: NSDate?! is not convertible to NSDate 代码: let dateCreated = photoCommentObjects[index
这是我的代码。但是一个错误说,不能用类型的参数列表调用 dateComponent... let fromDate = NSDate(timeIntervalSince1970: TimeInter
给定一个引用日期,我需要找到下面的“星期三”。 需要说明的是,如果引用日期是星期二,那么它应该返回同一周的星期三。 如果引用日期是星期三或更晚,则需要返回从下周开始的下一个星期三。 重要的是它不会返回
我有 NSDate* day1 和 NSDate* day2。我如何通过只复制第 1 天的年/月/日和第 2 天的小时/分钟/秒来制作 NSDate* day3? 最佳答案 unsigned unit
我有两个 NSDate 对象,我想要两者之间的差异,结果应该再次是一个 NSDate 对象。知道如何实现这一目标吗? 在这里,我试图解决一个独特的问题,我必须找出耗时,然后本地化耗时。如果我在 NSD
我试图强制用户使用日期选择器选择 future 的日期。我显然使用了compare:方法,但是,当我执行以下代码时,即使它与[NSDate date]相同的日期,它也会告诉执行if语句。这是我的代码:
我有两个用户选择的日期:开始日期和结束日期。它们是 NSDate 实例,我必须将它们作为 NSNumber 的参数发送。如何以秒为单位将它们转换为 NSNumber? 最佳答案 使用下面的代码: N
我对将 NSTimeInterval 转换为 NSDate 感到困惑,我有两个日期要比较,一个来自服务器,另一个在本地, 在服务器案例中,我以时间间隔格式获取日期,因此我也必须对本地数据执行相同的操作
我有一个从服务器获取的字符串 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z"我通过这个 formate 将这个字符串转换成 NSDate。 class func convertUTCDat
我是一名优秀的程序员,十分优秀!