暂无描述

RecentGroupInfo.swift 1.4KB

    // // LocalStorage.swift // PaiAi // // Created by mac on 2016/10/28. // Copyright © 2016年 FFIB. All rights reserved. // import UIKit extension GroupItem: ArrayUserDefaultCodable { public init(value: [String: AnyObject]) { self.init(JSON: value)! } public func toDictionary() -> [String: AnyObject] { return toJSON() as [String : AnyObject] } } extension UserDefaults { struct GroupInfo: ArrayUserDefaultable { typealias Item = GroupItem enum ArrayDefaultKey: String { case recentGroup } } } public struct RecentGroupInfo { public static var share: RecentGroupInfo { return RecentGroupInfo() } private var infos: [GroupItem] private var lock: NSLock public var count: Int { return infos.count } init() { infos = UserDefaults.GroupInfo.array(forKey: .recentGroup) lock = NSLock() } public subscript(index: Int) -> GroupItem { return infos[index] } mutating public func add(_ item: GroupItem) { lock.lock() if infos.count == 3 { infos.removeFirst() } infos.append(item) lock.unlock() } public func values() -> [GroupItem] { return infos.reversed() } public func save() { UserDefaults.GroupInfo.set(infos, forKey: .recentGroup) } }