Repository navigation
Expand file tree
/
Copy pathDataModel.swift
More file actions
89 lines (77 loc) · 2.77 KB
/
Copy pathDataModel.swift
File metadata and controls
89 lines (77 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//
// DataModel.swift
// Checklists
//
// Created by sora on 11/11/14.
// Copyright (c) 2014年 sora. All rights reserved.
//
import Foundation
class DataModel {
var lists = [Checklist]()
var indexOfSelectedChecklist: Int {
get {
return NSUserDefaults.standardUserDefaults().integerForKey("ChecklistIndex")
}
set {
NSUserDefaults.standardUserDefaults().setInteger(newValue, forKey: "ChecklistIndex")
}
}
class func nextChecklistItemId() -> Int {
let userDefaults = NSUserDefaults.standardUserDefaults()
let itemId = userDefaults.integerForKey("ChecklistItemId")
userDefaults.setInteger(itemId + 1, forKey: "ChecklistItemId")
userDefaults.synchronize()
return itemId
}
func handleFirstTime() {
let userDefaults = NSUserDefaults.standardUserDefaults()
let firstTime = userDefaults.boolForKey("FirstTime")
if firstTime {
let checklist = Checklist(name: "List")
lists.append(checklist)
indexOfSelectedChecklist = 0
userDefaults.setBool(false, forKey: "FirstTime")
}
}
func registerDefaults() {
let dictionary = ["ChecklistIndex": -1,
"FirstTime": true,
"ChecklistItemId": 0]
NSUserDefaults.standardUserDefaults().registerDefaults(dictionary)
}
func documentDirectory() -> String {
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as [String]
return paths[0]
}
func dataFilePath() -> String {
return documentDirectory().stringByAppendingPathComponent("Checklists.plist")
}
func saveChecklists() {
let data = NSMutableData()
let archiver = NSKeyedArchiver(forWritingWithMutableData: data)
archiver.encodeObject(lists, forKey: "Checklists")
archiver.finishEncoding()
data.writeToFile(dataFilePath(), atomically: true)
}
func sortChecklists() {
lists.sort({ checklist1, checklist2 in return
checklist1.name.localizedStandardCompare(checklist2.name) == NSComparisonResult.OrderedAscending
})
}
func loadChecklists() {
let path = dataFilePath()
if NSFileManager.defaultManager().fileExistsAtPath(path) {
if let data = NSData(contentsOfFile: path) {
let unarchiver = NSKeyedUnarchiver(forReadingWithData: data)
lists = unarchiver.decodeObjectForKey("Checklists") as [Checklist]
unarchiver.finishDecoding()
sortChecklists()
}
}
}
init() {
loadChecklists()
registerDefaults()
handleFirstTime()
}
}