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

        }

results matching ""

    No results matching ""