難しいことはわからないのですがUserDefaultsでNSMutableArrayを取り出すのが難しいらしいです。
詳しくはこちら参照。
きみが思い出になる前に – NSUserDefaultsに保存したmutableなオブジェクトはmutableCopyを使って作り直す
swift NSUserDefault で NSMutableArray が使えなくなった! – tomo358技術ブログ
NSMutableArrayをNSUserDefaultsで保存する | イリテク
なんか、冗長な感じになります。
Playgroundで書いてみた。
import UIKit var mutableArray = NSMutableArray() let alarmArray = [["hour": 07, "minute": 00, "switch":true], ["hour": 19, "minute": 00, "switch":true]] // NSUserDefaultsの取得 let defaults = UserDefaults.standard //初期値として保存。 defaults.register(defaults: ["muArray" : alarmArray]) //NSMutableArrayとして引き出す。 mutableArray = (defaults.object(forKey: "muArray")as AnyObject).mutableCopy() as! NSMutableArray print(mutableArray)
mutableArray = (defaults.object(forKey: “muArray”)as AnyObject).mutableCopy() as! NSMutableArray
ここの部分、なんか冗長ですよね〜。
で海外のstack overflow見てたらスマートに書かれてました。
参考サイト
ios – Ambiguous use of ‘mutableCopy()’ Swift3 – Stack Overflow
参考にすると、
import UIKit var mutableArray = NSMutableArray() let alarmArray = [["hour": 07, "minute": 00, "switch":true], ["hour": 19, "minute": 00, "switch":true]] // NSUserDefaultsの取得 let defaults = UserDefaults.standard //初期値として保存。 defaults.register(defaults: ["muArray" : alarmArray]) //NSMutableArrayとして引き出す。 mutableArray = defaults.mutableArrayValue(forKey: "muArray") print(mutableArray)
mutableArray = defaults.mutableArrayValue(forKey: “muArray”)
ここが重要↑こんな感じ。
よくわからんけどスマートですよね。
よかったよかった。
うじゃうじゃ。