如何使用 userDefaults 保存打印数组(swift 3)
Posted
技术标签:
【中文标题】如何使用 userDefaults 保存打印数组(swift 3)【英文标题】:how to use userDefualts to save printed array (swift3) 【发布时间】:2017-05-10 23:25:48 【问题描述】:如何使用 userDefualts 来保存我的数组条目,以确保它们在用户退出应用程序时重新出现。我正在尝试使用 userDefualts 来保存 var numbersWithCreationDate
import UIKit
class ViewController: UIViewController
@IBOutlet var entry: UILabel!
var numbersWithCreationDates = [(Int,String)]()
@IBOutlet var label: UITextField!
@IBOutlet var scrolView: UIScrollView!
@IBAction func enterScore(_ sender: Any)
if let text = label.text
if let number = Int(text)
// let numberAndDate = (number,Date())
let date = Date().description
let numberAndDate = (number, date.substring(to: date.characters.index(of: "+")!))
numbersWithCreationDates.insert(numberAndDate, at: 0)
//line in question
entry.text = numbersWithCreationDates.map "\($0.0)| \($0.1)" .joined(separator:"\n\n")
UserDefaults.standard.set(numbersWithCreationDates, forKey: "numbersWithCreationDates")
UserDefaults.standard.synchronize()
else
entry.text = "Please Enter Number"
// 让默认值 = UserDefaults.standard // defaults.set(numbersWithCreationDates, forKey: "SavedIntArray")
extension Date
static var formattedNow: String
let now = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
dateFormatter.timeZone = TimeZone(identifier: "EST")
return dateFormatter.string(from: now)
【问题讨论】:
【参考方案1】:设置标准默认值:
UserDefaults.standard.set(numbersWithCreationDates, forKey: "numbersWithCreationDates")
UserDefaults.standard.synchronize()
您可能需要在字典定义中使用 NSNumber
类而不是 Int
(但可能不需要,键和变量需要遵守 NSCopying 才能保存为默认值)
检索:
let numbersWithCreationDates = UserDefaults.standard.object(forKey: "numbersWithCreationDates") as! [Int:String]
【讨论】:
我根据您的建议编辑了我的代码。 Sigarbt 错误即将出现。 1.不要不必要地拨打synchronize
。 2.更重要的是,UserDefaults
中不能存储元组数组。以上是关于如何使用 userDefaults 保存打印数组(swift 3)的主要内容,如果未能解决你的问题,请参考以下文章
从 UserDefaults 获得的布尔值打印为 0 或 1,即使保存为 Any