gpt4 book ai didi

swift - 在服务器上创建模型的正确方法

转载 作者:行者123 更新时间:2023-11-28 15:37:54 24 4
gpt4 key购买 nike

请考虑该应用程序不会在模型中存储图像。相反,它存储用于从图像缓存中检索图像的 URL。

考虑这个模型:

class Post {
let id: String
let title: String
let imageUrl: URL
}

假设用户创建了一个新帖子(输入 title 并选择一个 image),应用将其发送到服务器。

问题:编写在服务器上创建新帖子的方法的正确方法是什么?

我想写这样的东西:

func createModel(_ model: Post, completion: () -> Void)

但问题是应用程序还不知道 imageUrl

另一个想法是有一个方法接受模型的所有属性:

func createPost(_ title: String, image: UIImage, completion: () -> Void)

但是这个解决方案是不可重用的:不可能有一个通用的方法来创建模型。不好。

此外,这种方法不允许我们在尚未保存到后端时使用模型,从而强制显示事件指示器。

对如何处理有什么建议吗?

最佳答案

如果您确实需要不可变模型(我认为您不需要),那么您可以选择将图像保存在应用程序的临时目录中,并为所有新创建的帖子使用本地镜像,为所有其他帖子使用服务器图像。这样您的模型将保持不变,您将摆脱任何事件指示器。

class Post {

let id: String
let title: String
var imageUrl: URL

init(id:String,title:String,imageUrl:URL){
self.id = id
self.title = title
self.imageUrl = imageUrl
}

init(id:String,title:String,image:UIImage){

self.id = id
self.title = title

let data = UIImageJPEGRepresentation(image, 0.8)
let url = URL(fileURLWithPath: "\(NSTemporaryDirectory())\(UUID().uuidString).jpeg")
try! data?.write(to: url, options: Data.WritingOptions.atomic)
self.imageUrl = url
}
}

关于swift - 在服务器上创建模型的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44110875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com