gpt4 book ai didi

ios - 最佳实践你只运行一次代码,并且只在你打开一个应用程序时运行。 swift 4,Xcode 8。

转载 作者:行者123 更新时间:2023-11-28 07:58:36 24 4
gpt4 key购买 nike

我试图仅在应用程序打开时运行一次函数。

背景

我在用户默认设置中有一个存储数组(我们称它为 storedArray),它从一个可由用户修改的数组 (userArray) 中获取其值。

问题 1: 每次我打开应用程序时,storedArray 都有以前 session 的值,当然 userArray 又是空的。因此,当 storedArray 再次从 userArray 获取值时,storedArray 会丢失其先前的值。

问题 1 的解决方案:当您打开应用程序时,userArray 会填充 storedArray 的值(来自上一个 session )。

没问题。现在:

**问题 2:**这必须在每次打开应用程序时只发生一次,否则 userArray 将开始多次使用重复值附加 storedArray 值。我想出了解决方案 1 和 2,第 3 我尝试遵循其他帖子的建议,但未能理解并实现它。

可能的解决方案 1:声明一个全局变量

Struct globalVariables{
static var x = 0
}

创建一个 if 语句,以便所需的代码仅在 globalVariables.x == 0 时运行

if globalVariables.x == 0 { 
//code to append values from storedArray to userArray goes here
//Then give a new value to globalVariables.x so that the if never gets accessed again
globalVariables.x == 1
}

这行得通,但我不知道这是否是一个好的做法。

可能的解决方案 2:将仅运行一次的代码放在 AppDelegate 文件中的应用程序函数中。

这个函数看起来像这样。

func application(_ application: UIApplication, 
didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//code to append values from storedArray to userArray goes here

这同样有效,但我不知道这是否是一个好的做法。

可能的解决方案 3: 如果我理解正确,其他帖子中建议的解决方案是使用单例。我永远无法真正完成这项工作,(或正确理解单例是什么)。

我用以下代码创建了一个新的 .swift 文件:

struct Service {

static let sharedInstance = Service(

func getStoredInfo () {

//code to append values from storedArray to userArray goes here
}
}
}

然后在 viewDidLoad 中调用这个函数:

Service.sharedInstance.getStoredInfo()

每次 viewDidLoad 运行时仍会调用该函数。如果单例真的可以帮助我解决这个问题,那么我完全遗漏了一些关于单例是什么以及如何实现它的非常基本的东西。完全。

解决方案 1 和 2 是好的做法吗?也许还有其他解决方案?

谢谢!

最佳答案

如果仅在启动后才需要做某事,那么“application didFinishLaunchingWithOptions”绝对是最佳选择。

问题:在 iOS 上,您无法控制应用何时终止。您需要存储应用程序的终止方式,以便您可以恢复 session 或开始新的 session 。

关于ios - 最佳实践你只运行一次代码,并且只在你打开一个应用程序时运行。 swift 4,Xcode 8。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47270740/

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