#iOS知识小集#「 如何比较日期是否为同一天 」by @halohily

在产品需求中,某个功能每天例行一次非常常见。比如,某个开关用户当天关掉之后,当天不再展示,直到新的一天第一次启动。再比如,某个功能一天有使用次数上限,直到新的一天第一次启动才恢复额度。一般我们处理这种需求都是在本地存储一个变量来记录最后一次启动的日期,在每次判断功能是否可用时,比较存储的日期和当前最新日期是否同一天。之前处理这个需求的时候,是使用 NSCalendar 对象分别生成两个 NSDate 对象的 NSDateComponents,进而分别比较年、月、日。后来发现,有一个简便的做法是使用同一个 NSDateFormatter 分别生成两个 NSDate 的 NSString,直接比较字符串是否相同即可。

与此相似的还有如何判断一个字符串是否为合法的 NSURL?最正确的办法是使用这个字符串去生成 NSURL 对象,如果返回 nil,这个字符串即为不合法。大多数人面对这个需求很可能会选择繁琐的正则匹配等方式,殊不知转换一下思路,事情会变得非常优雅且简便。
展开
2