Swift - 年月日时分秒...的唯一性判断

本来想随便写个判断当日方法而已,谁知道越写越多,后来干脆顺便封装了年月日时分秒的唯一性判断,估计大家在项目有时候也会用到,比较判断APP是否今天已经启动,决定提示用户什么或者弹出广告之类。
实现原理也比较简单,根据系统NSUserDefaults单例来存取时间数据来判断
大家可以根据这个来扩展下,判断距离上次使用时长或者实现其他功能等。
Swift - 年月日时分秒...的唯一性判断_第1张图片
//
//  Unique.swift
//  逗牛
//
//  Created by mac on 16/8/24.
//  Copyright © 2016年 mac. All rights reserved.
//

import Foundation
    
enum Unique {
    case year
    case month
    case day
    case hour
    case min
    case seconds
    
   var isOnly: Bool {
        let defults = NSUserDefaults.standardUserDefaults()
        guard let currUnique = defults.objectForKey(String(self)) as? String where currUnique == self.onlySnail else {
            //不存在则创建 -> 存在则判断 是否为今天 -> 否则 记录今天
            defults.setObject(self.onlySnail, forKey: String(self))
            defults.synchronize()
            return false
        }
        return true
    }
    
    private var onlySnail: String {
        let now = NSDate() //获取当前时间
        let dformatter = NSDateFormatter() //创建一个日期格式器
        switch self {
        case .year:
            dformatter.dateFormat = "yyyy年"
        case .month:
            dformatter.dateFormat = "yyyy年MM月"
        case day:
            dformatter.dateFormat = "yyyy年MM月dd日"
        case hour:
            dformatter.dateFormat = "yyyy年MM月dd日 HH"
        case min:
            dformatter.dateFormat = "yyyy年MM月dd日 HH:mm"
        case seconds:
            dformatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
        }
        return dformatter.stringFromDate(now)
    }
}

使用:在需要使用的地方直接判断即可

        if Unique.year.isOnly == true {
            print("别急,今年很快就过去了")
        }
        
        if Unique.month.isOnly == true {
            print("这个月,你已经不能在过去了")
        }
        
        if Unique.day.isOnly == true {
            print("今天已经领取了(⊙o⊙)哦")
        }
        
        if Unique.hour.isOnly == true {
            print("这小时还没有过去噢")
        }
        
        if Unique.min.isOnly == true {
            print("这分钟很快就过去了,亲")
        }
        
        if Unique.seconds.isOnly == true {
            print("秒杀你的节奏")
        }

你可能感兴趣的:(Swift - 年月日时分秒...的唯一性判断)