今、UserDefault
に[NSDictionary]
を保存したいのですが、self.set(savaDatas, forKey: "favoritePage")
が実行されるとTerminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to insert non-property list object
になってしまいます
自分でも考えてみたのですが、原因がわかりませんでした。ご存知の方いましたら教えていただけませんでしょうか
Swift
1extension UserDefaults{ 2 var favoritePage:[fPageManager]{ 3 set(datas){ 4 let savaDatas:[NSDictionary] = datas.map{ 5 ["favoritePageHeader":$0.favoritePageHeader, 6 "favoritePageURL":$0.favoritePageURL] as NSDictionary 7 } 8 self.set(savaDatas, forKey: "favoritePage") 9 } 10 get{ 11 let saveDatas = self.object(forKey: "favoritePage") as? [NSDictionary] ?? [] 12 let favoritePageArray = saveDatas.reduce([]){ (ary, d:NSDictionary) -> [fPageManager] in 13 if let favoritePageHeader = d["favoritePageHeader"] as? String, 14 let favoritePageURL = d["favoritePageURL"] as? URL{ 15 return ary + [fPageManager(favoritePageHeader: favoritePageHeader, favoritePageURL: favoritePageURL)] 16 }else{ 17 return ary 18 } 19 } 20 return favoritePageArray 21 } 22 } 23}
swift
1import UIKit 2 3var fPageArray = UserDefaults.standard.favoritePage 4 5struct fPageManager{ 6 init(favoritePageHeader: String, favoritePageURL: URL) { 7 self.favoritePageHeader = favoritePageHeader 8 self.favoritePageURL = favoritePageURL 9 } 10 11 var favoritePageHeader: String 12 var favoritePageURL: URL 13}
Swift
1AppDelegate.swift 2//ここで保存する 3func applicationWillTerminate(_ application: UIApplication) { 4 UserDefaults.standard.favoritePage = tst 5 // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 6}
参考にさせていただいたサイト
[Swift]構造体をUserDefaultsで保存する方法
よろしくお願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/05/08 14:34