// // 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 var ShareRecentGroupInfo = RecentGroupInfo() public struct 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() infos.removeAll(where: { $0.group_id == item.group_id }) 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) } }