当前位置: 首页 > 知识库问答 >
问题:

在Swift中实例化新的可编码对象的最简单方法是什么?

萧元徽
2023-03-14

我有一个可编码的类:

class Task: Codable {
    var name: String
}

当我尝试实例化它时:

let newTask = Task()
allTasks.append(newTask)

这给了我一个错误:

调用中缺少参数“from”的参数

我只想在数组中插入一个新对象(newTask)。最简单的方法是什么?

共有3个答案

强烨
2023-03-14

您的任务类没有提供自己的初始值设定项,因此它获得了可编码协议中定义的初始值设定项(它从可解码协议中获得)。

要么添加自己的显式init,它接受名称参数,要么将类更改为结构。无论哪种方式,都需要通过传入名称值来创建一个任务,这样就可以初始化名称属性。

这些都没有解决您发布的代码没有使用Coable的事实,因此您的类(或结构)可能不需要符合Coable

夏骞尧
2023-03-14

另一个解决方案是使用struct

struct Task: Codable {
    var name: String
}

let task = Task(name: "myname")
甄伟兆
2023-03-14

您可以从NSObject继承初始值设定项:

class Task: NSObject, Codable {
    var name: String = ""
}

let newTask = Task()

如果不想继承NSObject,只需创建自己的初始值设定项:

class Task: Codable {
    var name: String?

    init() {

    }
}

如果不想将name设置为可选(或将其设置为默认值),则必须在init()中对其进行初始化,例如:

class Task: Codable {
    var name: String

    init(withName name: String) {
        self.name = name
    }
}
let newTask = Task(withName: "ikevin8me")
 类似资料:
  • 问题内容: 现在,我有一个Java程序,其类当前为POJO,并存储在易失性内存中。这些必须坚持下去。据我了解,两个流行的选择是JDO和Java Persistence API。对于对SQL,Torque等了解甚少的人,这是向程序数据添加持久性的最简单方法? 问题答案: 序列化到文件系统的传统方法是使用Java序列化。但是,您需要在各处实现Serializable。 一个更简单的解决方案是使用XSt

  • 问题内容: 我在生产中有20GB +的rdb转储。我怀疑有一组特定的按键使它blo肿。我希望有一种方法可以始终从静态转储分析中发现前100个最大对象,或者将其询问给服务器本身,而服务器本身有7M个对象。 像rdbtools这样的转储分析工具在这个(我认为)非常常见的用例中无济于事! 我当时想编写一个脚本,并使用“ redis-cli调试对象”对整个键集进行迭代,但是我感觉必须缺少某些工具。 问题答

  • 问题内容: 在JavaScript中实现单例模式的最简单/最干净的方法是什么? 问题答案: 我认为最简单的方法是声明一个简单的对象文字: 如果您希望单例实例上有私人成员,则可以执行以下操作: 这就是所谓的模块模式,它基本上可以让你来封装对象私有成员,通过采取利用的优势关闭。 更新: 我想补充一点,如果要防止修改单例对象,可以使用ES5 方法冻结它。 这将使对象不可变,从而防止对其结构和值进行任何修

  • 问题内容: 我正在尝试使用JSON(使用simplejson)序列化python对象列表,并收到以下错误:对象“不可JSON序列化”。 该类是一个简单的类,其字段只有整数,字符串和浮点数,并且从一个父超类继承相似的字段,例如: foo,bar是我上面提到的简单类型。唯一棘手的事情是,ChildClass有时具有一个字段,该字段引用另一个对象(类型不是ParentClass或ChildClass)。

  • 问题内容: 说我有一个类似的任务: 并行化每个compute()的最简单方法是什么(假设它们已经可以并行化了)? 我不需要严格匹配上面代码的答案,而只是一个常规答案。但是,如果您需要更多信息:我的任务是IO绑定的,这是针对Spring Web应用程序的,这些任务将在HTTP请求中执行。 问题答案: 我建议看一下ExecutorService。 特别是这样的事情: 请注意,如果列表很大,使用可能会很

  • 问题内容: 用Java编写的相对简单的算法来解决Rubik立方体。效率也很重要,但是次要考虑因素。 问题答案: 我发现的最简单的 非平凡 算法是这个: http://www.chessandpoker.com/rubiks-cube- solution.html 编写代码看起来并不难。YannickM.的答案中提到的链接看起来也不错,但是“ 十字架 ”步骤的解决方案对我来说似乎有点复杂。 您可能想