0
CNContactの詳細をUserDefaultsに保存しようとしていますが、失敗します。 保存できる他の方法CNContact
?CNContactをUserDefaultsに保存する
struct User {
var firstName: String = ""
var lastName: String = ""
var email: String = ""
var phoneNumber: String = ""
var company: String = ""
var assistantContact: CNContact?
init(firstName: String, lastName: String, email: String, phoneNumber: String, company: String, assistantContact: CNContact? = nil) {
self.firstName = firstName
self.lastName = lastName
self.email = email
self.phoneNumber = phoneNumber
self.company = company
self.assistantContact = assistantContact
}
func encode() -> Dictionary<String, AnyObject> {
var dictionary : Dictionary = Dictionary<String, AnyObject>()
dictionary["firstName"] = firstName as AnyObject?
dictionary["lastName"] = lastName as AnyObject?
dictionary["email"] = email as AnyObject?
dictionary["phoneNumber"] = phoneNumber as AnyObject?
dictionary["company"] = company as AnyObject?
dictionary["assistantContact"] = assistantContact as AnyObject?
return dictionary
}
init(dictionary: Dictionary<String, AnyObject>) {
if let firstName = dictionary["firstName"] as? String {
self.firstName = firstName
}
if let lastName = dictionary["lastName"] as? String {
self.lastName = lastName
}
if let email = dictionary["email"] as? String {
self.email = email
}
if let phoneNumber = dictionary["phoneNumber"] as? String {
self.phoneNumber = phoneNumber
}
if let company = dictionary["company"] as? String {
self.company = company
}
if let assistantContact = dictionary["assistantContact"] as? CNContact {
self.assistantContact = assistantContact
}
}
}
コードのためには、一度 –
UserDefaults' 'のドキュメントから表示してくださいクラッシュし、デフォルトでその連絡先を保存するために書いた:* UserDefaultsクラスは、このような一般的なタイプにアクセスするための便利なメソッドを提供します浮動小数点数、倍精度値、整数、ブール値、およびURLとして扱われます。デフォルトオブジェクトは、NSData、NSString、NSNumber、NSDate、NSArray、またはNSDictionaryのインスタンス(またはコレクション、インスタンスの組み合わせ)のプロパティリストでなければなりません。他のタイプのオブジェクトを保存する場合は、通常はNSDataのインスタンスを作成するためにアーカイブする必要があります。詳細は、設定と設定のプログラミングガイドを参照してください。* CNContactはリストされていません。 – rmaddy
@iOSGeek UserDefaults.standard.set(currentUser.encode()、forKey:AppConstants.kLoggedInUser)。 currentUser.encode()でクラッシュする – Nitesh