[問題] 想把一個Dictionary強制轉型成AnyObject

看板MacDev作者 (嗯?)時間9年前 (2016/04/23 22:44), 9年前編輯推噓1(109)
留言10則, 5人參與, 最新討論串1/1
我目前在做練習的專案 想做的事情是這樣: 在view上操作完之後要把detail存起來 在下次打開app的時候可以顯示最後操作的畫面 我google的結果是要用NSUserDefaults的setObject來儲存 不過setObject只能儲存特定格式的object,所以Account裡面的變數要encode 但在encodeWithCoder裡要把detail轉型成AnyObject時一直失敗 (var detail = [NSDate: [Detail]]() ) 我想請問要把像detail這樣的結構轉成AnyObject該怎麼轉呢? 如果沒有辦法轉的話,有什麼其他替代的方法可以做到我想要的結果嗎? 簡碼如下,如果有什麼不清楚的地方請告訴我,我會再補充,感謝 Struct Detail { var name: String var num: Int } Class Account: NSOBject, NSCoding { var detail = [NSDate : [Detail]]() required init?(coder aDecoder: NSCoder) { let decodeObj = aDecoder.decodeObjectForKey("detail") if let object = decodeObj as? [NSDate: [AccountDetail]] { detail = object } } func encodeWithCoder(aCoder: NSCoder) { if let object = detail as? AnyObject { // 這個if一直不會進來 aCoder.encodeObject(object , forKey: "detail") } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.4.77 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1461422663.A.AB3.html ※ 編輯: genesic (61.231.4.77), 04/23/2016 22:46:26

04/23 23:18, , 1F
改用 Any
04/23 23:18, 1F

04/23 23:20, , 2F
AnyObject 只能用在 Class 的 instance 上
04/23 23:20, 2F

04/23 23:45, , 3F
Dictionary 是Struct 不是 Object
04/23 23:45, 3F

04/24 00:21, , 4F
感謝回答,我剛試了一下,看來要直接對dictionary做
04/24 00:21, 4F

04/24 00:21, , 5F
encodeObject是不太可能了,我剛試了用Any就被compiler擋
04/24 00:21, 5F

04/24 00:22, , 6F
下,我來轉成json試試好了,感謝
04/24 00:22, 6F

04/24 01:17, , 7F
從 Objective-C 起 dictionary 和 array 就需要特別處裡
04/24 01:17, 7F

04/24 01:17, , 8F
ObjC 是用 NSKeyedArchiver, Swift 就不知道了
04/24 01:17, 8F

04/24 01:18, , 9F
但 ObjC 都可以了, Swift 應該沒理由直接 encode 才是
04/24 01:18, 9F

04/26 16:08, , 10F
文章代碼(AID): #1N6uf7gp (MacDev)
文章代碼(AID): #1N6uf7gp (MacDev)