gpt4 book ai didi

ios - 快速存储临时数据的最佳实践

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:26 25 4
gpt4 key购买 nike

我开发了一个应用程序,它从服务器获取大量 JSON 数据并显示在不同的 VC 上。我所做的是获取数据并将数据设置为静态变量,这样我就可以访问我所有应用程序中的数据。

现在我注意到我可以使用 CoreData 或者 UserDefaults 而不是 静态变量

我的问题是“这类应用的最佳实践是什么?为什么?”

注意:该应用不需要离线工作和保存数据以在离线模式下显示。

最佳答案

您不应该将数据存储到 UserDefaults,用户默认值只是一个基于键值的文件,主要用于存储有关用户的一些数据,例如:

doNotShowAdds : true
isUserLogedIn :true.

您也不应该使用钥匙串(keychain),因为钥匙串(keychain)是加密容器,您可以在其中存储有关用户的关键数据,例如:密码。

你不需要使用数据库

我的意见是你不应该使用全局变量,主要是我尝试让 viewController 数据针对它自己,不应该从你项目的任何地方访问数据。 When to use global variables in Swift

大多数情况下,我使用特定 View Controller 的实现来制定服务协议(protocol)。无论如何,每个 Controller 都应该有自己的数据部分,例如

class MyViewControllerOne {
private var data :Array<DataExampleOne>;
}

class MyViewControllerTwo {
private var data :Array<DataExampleTwo>;
}

一旦您从 API 加载数据,数据就会一直存在,直到您关闭您的应用。

您总是可以创建另一个包含此数据的类,并且可能包含谓词以实现更简洁的方法,例如:

protocol MyViewControllerOneService {
func search() -> Array<DataExampleOne>;
}

class MyViewControllerOneServiceImpl :MyViewControllerService {
public var data :Array<DataExampleOne>;

public func search(searchString :String) -> Array<DataExampleOne>{
let predicate = NSPredicate() ...
let filteredArray = self.data.filter { evaluate...}
return filteredArray;
}
}

我使用类似的方法,而不是将数据保存在我的服务类(业务逻辑)中,而是使用存储库从数据库中获取数据。由于您没有任何数据库,因此这种方法没问题。

然后代替

class MyViewControllerOne {
private var data :Array<DataExampleOne>;
}

你可以使用

class MyViewController {
private var myViewControllerService :MyViewControllerOneServiceImpl;
}

希望对你有帮助最好的问候!

关于ios - 快速存储临时数据的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45668340/

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