|
//
// 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)
}
}
|