我目前正在尝试将自定义Swift类保存到NSUserDefaults。这是我的游乐场代码:
import Foundation
class Blog : NSObject, NSCoding {
var blogName: String?
override init() {}
required init(coder aDecoder: NSCoder) {
if let blogName = aDecoder.decodeObjectForKey("blogName") as? String {
self.blogName = blogName
}
}
func encodeWithCoder(aCoder: NSCoder) {
if let blogName = self.blogName {
aCoder.encodeObject(blogName, forKey: "blogName")
}
}
}
var blog = Blog()
blog.blogName = "My Blog"
let ud = NSUserDefaults.standardUserDefaults()
ud.setObject(blog, forKey: "blog")
运行代码时,出现以下错误
执行被中断,原因:信号SIGABRT。
在最后一行(ud.setObject
…)
在带有消息的应用程序中,相同的代码也会崩溃
“属性列表对于格式无效:200(属性列表不能包含’CFType’类型的对象)”
有人可以帮忙吗?我在Maverick上使用Xcode 6.0.1。谢谢。
正如@ dan-beaulieu建议的那样,我回答我自己的问题:
现在是工作代码:
注意:类名称的拆解对于代码在Playgrounds中的工作不是必需的。
import Foundation
class Blog : NSObject, NSCoding {
var blogName: String?
override init() {}
required init(coder aDecoder: NSCoder) {
if let blogName = aDecoder.decodeObjectForKey("blogName") as? String {
self.blogName = blogName
}
}
func encodeWithCoder(aCoder: NSCoder) {
if let blogName = self.blogName {
aCoder.encodeObject(blogName, forKey: "blogName")
}
}
}
let ud = NSUserDefaults.standardUserDefaults()
var blog = Blog()
blog.blogName = "My Blog"
ud.setObject(NSKeyedArchiver.archivedDataWithRootObject(blog), forKey: "blog")
if let data = ud.objectForKey("blog") as? NSData {
let unarc = NSKeyedUnarchiver(forReadingWithData: data)
let newBlog = unarc.decodeObjectForKey("root") as Blog
}
问题内容: 我正在制作一个使用AVFoundation拍照的应用程序,我想将它们保存到自定义相册中,然后查询并显示在我的应用程序中。(除非用户希望,否则我不希望它们出现在一般的照片胶卷中)我真的找不到任何东西可以显示在Swift中如何做到这一点……或根本没有。我应该有其他方法吗? 我在SO上找到了这个示例,但是对我来说这没有意义,我无法使其正常工作。 任何帮助/说明都将非常棒! 问题答案: 这是我
问题内容: 我有一个新闻和一个消息。所述含有选择加入到阵列时teamObjects的的tableView。我想将此数组添加到其中,以便可以从其中包含需要teamObjects的url请求的访问它们。但是我不断得到: “试图为关键团队插入非财产列表对象(“”) 如果有比将其存储在更好的方法,我愿意接受其他建议 方法 我的对象 问题答案: 实际上,您将需要将自定义对象归档到其中,然后将其保存到用户默认
自定义缓存类使用说明 phpGrace 1.2.1 版本新增了自定义缓存类的功能,您可以将某个相同类型的缓存封装为一个类文件,便于项目的复用 (: 实现步骤 在 phpGrace/caches/ 文件夹下创建您的自定义缓存类文件 文件命名规则 : 缓存类名称.php 类命名规则 : class 缓存类名称 extends \cacheBase{} 使用命名空间 : namespace phpG
我正试图将一个值从一个定制钩子(为服务器获取数据)保存到带有useState的功能组件状态,因为我以后需要更改这个值,更改后需要重新加载。因此,理想的行为是: 将状态变量设置为自定义挂钩中的值 我尝试的是: > 设置useState的初始值到我的钩子:
问题内容: 我在Playground中使用Swift 3,Xcode 8.0拥有此功能: 创建人员数组 编码数组 保存到用户默认值 检查 从userDefaults返回 只需检查存档的数据 我无法正确将数据对象保存到userDefaults,此外,底部的检查还会产生错误“严重错误:在展开可选值时意外发现nil”。“检查”行还显示已保存的对象为nil。这是我对象的NSCoder中的错误吗? 问题答案
我有一个自定义帖子类型的站点设置来定义主页调用操作框。 标题、描述和特色图像都由edtior的默认块/功能处理,但我正在尝试添加一个自定义块以将url保存到帖子的元。 块正确呈现,但它没有保存元数据,显然调用了< code>updateBlockValue函数。 我使用了几乎相同的代码为页面和帖子创建自定义元块。此方法是否不适用于自定义帖子类型? 这是我正在使用的代码: 服务器端编程语言(Prof