UserDefault Array
일단 데이타를 관리하는 클래스 파일을 만든다.
import Foundation
class Task: NSObject, NSCoding {
let title: String
let Latitude: String
let Longitude: String
let radius: String
required init(title: String, Latitude: String, Longitude: String, radius: String) {
self.title = title
self.Latitude = Latitude
self.Longitude = Longitude
self.radius = radius
print("title== \(title) :: Latitude== \(Latitude) :: Longitude== \(Longitude) :: Radius== \(radius)")
}
func encode(with coder: NSCoder) {
coder.encode(title, forKey: "title")
coder.encode(Latitude, forKey: "Latitude")
coder.encode(Longitude, forKey: "Longitude")
coder.encode(radius, forKey: "radius")
}
required init(coder decoder: NSCoder) {
self.title = decoder.decodeObject(forKey: "title") as? String ?? ""
self.Latitude = decoder.decodeObject(forKey: "Latitude") as? String ?? ""
self.Longitude = decoder.decodeObject(forKey: "Longitude") as? String ?? ""
self.radius = decoder.decodeObject(forKey: "radius") as? String ?? ""
}
}
사용할 페이지에 변수 처리하고
var tasks: [Task] = []
데이타를 넣을때
tasks.append(Task(title: locationTitle.text!, Latitude: String(nowLatitude), Longitude: String(nowLongitude), radius: Radius.text!))
UserDefaults.standard.set(NSKeyedArchiver.archivedData(withRootObject: tasks) , forKey: "tasks")
데이타를 읽을때
if let data = UserDefaults.standard.data(forKey: "tasks") {
tasks = NSKeyedUnarchiver.unarchiveObject(with: data) as? [Task] ?? []
print("tasks.count =========================== \(tasks.count)")
print("tasks =========================== \(tasks)")
for i in 0 ..< tasks.count {
print("tasks[i] =========================== \(tasks[i].title)")
print("tasks[i] =========================== \(tasks[i].Latitude)")
print("tasks[i] =========================== \(tasks[i].Longitude)")
print("tasks[i] =========================== \(tasks[i].radius)")
}
}