所以,我有点坚持这是一个概念/问题,想知道你们中是否有人遇到过这个问题/有解决方案。
让我们简单地假设我构建了一个角色引擎,如下所示:(我不会这样做,但这只是一个示例(
struct Character
var content: () -> String
init(_ content: @escaping () -> String) {
self.content = content
}
所以现在我可以创建一个这样的角色
let heero = Character({"Heero"})
很棒,很棒,很酷。现在让我们假设,出于某种原因,我的服务器上有一个包含一堆这些字符的.swift
文件,例如。
let relena = Character({"Relena"})
let wufei = Character({"Wufei"})
let quatre = Character({"Quatre"})
我是否可以下载服务器.swift
文件,并让我的应用程序实际使用它?
不
您的应用程序无法从服务器下载 swift 文件,编译并执行它。
然而
您确定您的Character
结构初始值设定项需要闭包作为参数吗?如果你只需要传递一个字符串,那么:
- 将服务器上的字符串放入 JSON 中
- 获取 JSON
- 读取 JSON 并从其内容创建
Character(s)
----更新----
如果你真的不需要在 Character 结构中闭包,你可以遵循这种方法:
- 杰伦 将所有字符串放入服务器上的 JSON 中
这是它在操场上的样子
let data = """
{
"Hello I am Alex",
"Hello I am Bob",
"Hello I am Charlie"
}
""".data(using: .utf8)!
字符
接下来定义您的字符结构,如下所示
struct Character: Decodable {
let content: String
}
译码
最后将您的 JSON 转换为Character(s)
数组
if let characters = try? JSONDecoder().decode([Character].self, from: data) {
print(characters)
}