gpt4 book ai didi

ios - 使用 NSUserDefaults Swift 存储数据

转载 作者:行者123 更新时间:2023-11-29 00:48:51 25 4
gpt4 key购买 nike

想知道如何使用 NSUserDefaults 如果这是保存我在应用程序中的数据的正确解决方案。数据不是很多,所以我认为这可能是一个很好的解决方案。目前将数据存储到应用程序中的对象中,然后在用户设置对象后将其加载到数组中。

var placesChosen: [Place] = []
var myplaces: Place = Place()

class Place {
var name: String?
var locationAddress: String?
var locationPhoneNumber: String?
}

function createPlace(){
// code to add place
placeChosen.append("some data to add")

}

稍后我想从 NSUserDefaults 存储的数据中提取数据并将数据显示给用户。此外,我应该提到用户只能将对象设置到数组中。

最佳答案

不建议在 NSUserDefaults 中存储大量数据。 NSUserDefaults 用于存储用户偏好等小数据。

如果你还想继续,你可以使用下面在 Playground 中编译的代码。


//: Playground - noun: a place where people can play

import UIKit

// Update your class to add encoder and decoder
class Place: NSObject, NSCoding {
var name: String?
var locationAddress: String?
var locationPhoneNumber: String?

init(name:String, locationAddress: String,locationPhoneNumber: String) {
self.name = name
self.locationAddress = locationAddress
self.locationPhoneNumber = locationPhoneNumber
}

required convenience init(coder aDecoder: NSCoder) {

let name = aDecoder.decodeObjectForKey("name") as! String
let locationPhoneNumber = aDecoder.decodeObjectForKey("locationphonenumber") as! String
let locationAddress = aDecoder.decodeObjectForKey("locationaddress") as! String
self.init(name: name, locationAddress: locationAddress, locationPhoneNumber: locationPhoneNumber)
}

func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name, forKey: "name")
aCoder.encodeObject(locationAddress, forKey: "locationaddress")
aCoder.encodeObject(locationPhoneNumber, forKey: "locationphonenumber")

}
}


//Create your array of chosen place
let placesChosen = [Place(name: "India",locationAddress: "IndianAddress",locationPhoneNumber:"IndianPhoneNumber"), Place(name: "India",locationAddress: "IndianAddress",locationPhoneNumber:"IndianPhoneNumber")]


// Add your data to NSUser defaults
var userDefaults = NSUserDefaults.standardUserDefaults()
let encodedData = NSKeyedArchiver.archivedDataWithRootObject(placesChosen)
userDefaults.setObject(encodedData, forKey: "place")
userDefaults.synchronize()

// Retrieve your data from NSUserDefaults
if let decodedData = NSUserDefaults.standardUserDefaults().objectForKey("place") as? NSData {
let decodedPlace = NSKeyedUnarchiver.unarchiveObjectWithData(decodedData) as! [Place]
print(decodedPlace)

}

关于ios - 使用 NSUserDefaults Swift 存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38365322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com