swift - 将 NSURL 数组保存到 NSUserDefaults

标签 swift nsuserdefaults nsurl

我有一个像这样的 NSURL 项目数组:

var array = [NSURL]()

我正在尝试将其保存到 NSUserDefaults:

let defaults = NSUserDefaults(suiteName: "group.a.project")
defaults?.setObject(array, forKey: "NSURLarray")

将导致它崩溃,因为 NSURL 不能存储在 NSUserDefaults 中。

如何将这个 NSURL 数组保存到 NSUserDefaults,以便我可以访问它并根据需要使用数组中的 NSURL(保存一个字符串数组然后尝试将它们用作 NSURL 将导致错误xcode)?

最佳答案

您可以将您的 URL 数组存档到一个 NSData 实例并将其存储在用户默认值中。保存:

let urls = [ NSURL(string: "http://www.google.com")!, NSURL(string: "http://www.stackoverflow.com")! ]
let defaults = NSUserDefaults(suiteName: "group.a.project")
let data = NSKeyedArchiver.archivedDataWithRootObject(urls)

defaults?.setValue(data, forKey: "myUrls")

加载:

if let data = defaults?.valueForKey("myUrls") as? NSData {
  if let urlsArray = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? [NSURL] {
    println(urlsArray)
  }
}

关于swift - 将 NSURL 数组保存到 NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28912787/

相关文章:

iphone - NSUserDefaults: +resetStandardUserDefaults 方法有什么用?我如何提供 "system settings"?

ios - 一些代码没有按预期运行

ios - 如何获取外部 URL 缩略图 iOS

ios - 将 UITextField 值转换为字符串

ios - 如何检测 UIAccessibilityRequestGuidedAccessSession 在设备上是否处于事件状态,iOS swift?

ios - Swift UIImage 全屏宽度

objective-c - NSUserDefaults 没有在 cocoa 中保存任何值

iphone - 创建的 NSURL 为空

ios - 在 swift 中,有什么方法可以调用 super.methodname 吗?

swift - 如何正确出列代码中的字幕 UITableViewCell?