gpt4 book ai didi

ios - 使用核心数据将联系人保存到 TableView 中

转载 作者:行者123 更新时间:2023-11-28 15:58:36 24 4
gpt4 key购买 nike

我有一个使用适用于 iOS 9+ 的联系人框架的应用程序。我制作了一个表格 View ,其中包含用户选择的一些联系人。我希望能够保留此联系人列表。做这个的最好方式是什么?我在考虑使用核心数据。

我的问题是联系人是“var Contacts = CNContact”,因此不是 NSManagedObject 类型。我的印象是,要使用核心数据保存数据,变量必须是 NSManagedObject 类型,而我的变量是 CNContact 类型。

最佳答案

下面是一个使用 plist 保存数据的示例。假设您有一个对象,例如“用户”。例如,此用户有用户名和密码。

然后在你的用户类中你应该有这样的东西:

class User: NSObject, NSCoding {

var username: String
var password: String

required init?(coder aDecoder: NSCoder) {
username = aDecoder.decodeObject(forKey: "Username") as! String
password = aDecoder.decodeObject(forKey: "Password") as! String
}

init(username: String, password: String, subjects: [Subject], colorPreferences: [Subject: UIColor], assessments: [Assessment]) {
self.username = username
self.password = password

}

func encode(with aCoder: NSCoder) {
aCoder.encode(username, forKey: "Username")
aCoder.encode(password, forKey: "Password")

}

}

然后您需要在使用用户对象的 viewController 中执行以下操作:

var loggedInUser: User?

class MyViewController: UIViewController {

func documentsDirectory() -> String {
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
return paths[0]
}

func dataFilePath() -> String {
return (documentsDirectory() as NSString).appendingPathComponent("AppInfo.plist") //name of your plist
}

func saveData() {

let data = NSMutableData()
let archiver = NSKeyedArchiver(forWritingWith: data)
archiver.encodeObject(loggedInUser, forKey: "Logged In User") //whatever key you want
archiver.finishEncoding()
data.write(toFile: dataFilePath(), atomically: true)


}

func loadData() {
let path = dataFilePath()

if FileManager.default.fileExists(atPath: path){

if let data = NSData(contentsOfFile: path){

let unarchiver = NSKeyedUnarchiver(forReadingWith: data as Data)
loggedInUser = unarchiver.decodeObjectForKey("Logged In User") as? UserProfile

unarchiver.finishDecoding()
}

}
}

}

所以这是一个简化版本,但您应该能够调整它来保存您的 CNContacts 列表。如果有任何问题,请告诉我。我在自己的应用程序中使用此代码,因此它应该可以正常工作。

关于ios - 使用核心数据将联系人保存到 TableView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41403753/

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