【发布时间】:2015-08-20 15:49:36
【问题描述】:
我正在尝试在我的应用和 Today Extension 之间共享 [[String:String]] 对象。
在我的应用程序中,我正在保存这样的对象:
override func viewWillDisappear(animated: Bool) {
// Save all data and update Today Extension
// 1) Save selectedStations as Dictionary to NSUserDefaults
if var sharedDefaults = NSUserDefaults(suiteName: "group.xxx.xxx") {
// Save to userDefaults (1) stationName, (2) stationLine, (3) id, (4) statnId, (5) subwayId
var arrayOfDic:[[String:String]] = []
for station in selectedStations {
// Organize data to pass to widget
let name: String = station.name ?? ""
let line: String = station.line ?? ""
let id: String = station.id ?? ""
let statnId: String = station.statnId ?? ""
let subwayId: String = station.subwayId ?? ""
// Create dictionary
let dic = [
"name" : name,
"line" : line,
"id" : id,
"statnId" : statnId,
"subwayId" : subwayId
]
// Append to array
arrayOfDic.append(dic)
}
// Save to NSUserDefaults
sharedDefaults.setObject(arrayOfDic, forKey: "selectedStations")
println(" saved:\(arrayOfDic)")
sharedDefaults.synchronize()
}
// 2) Refresh Today Extension
}
在同一个 .swift 文件中,我正在像这样检索“ViewDidLoad”中的数据:
override func viewDidLoad() {
super.viewDidLoad()
if var sharedDefaults = NSUserDefaults(suiteName: "group.xxx.xxx") {
sharedDefaults.synchronize()
if let arrayOfDic = NSUserDefaults().objectForKey("selectedStations") as? [[String:String]] {
println(" fetched:\(arrayOfDic)")
}
}
}
但我意识到
println(" saved:\(arrayOfDic)")
记录我要保存的内容,但是
println(" fetched:\(arrayOfDic)")
没有记录任何东西。这部分似乎为零:
if let arrayOfDic = NSUserDefaults().objectForKey("selectedStations") as? [[String:String]]
我的代码错了吗??
【问题讨论】:
标签: ios xcode swift nsuserdefaults today-extension