【问题标题】:Is there a function in Swift that only runs during the first time opening the app?Swift 中是否有仅在第一次打开应用程序时运行的功能?
【发布时间】:2018-07-13 15:52:27
【问题描述】:

我目前正在制作一个字典应用程序,每次打开应用程序并将其保存到 CoreData 时,我都会重新解析包含字典所有条目的 json 文件。我想知道 Swift 中是否有一个函数在下载应用程序时只运行一次然后不再运行。

【问题讨论】:

  • 如果您已经在使用 coredata,为什么不保存用户并设置一个“firstboot”标志?
  • 这是什么意思?
  • 您可以在 NSUserDefaults 中创建一个密钥并将其命名为 MyAppFirstLaunched 之类的名称,并在应用启动时检查它。如果为假,则进行解析并将其设置为真。
  • 当用户下载您的应用程序时,在持久存储中实际拥有已解析的字典不是更容易吗?当您可以在包中提供日期时,我看不到在用户端解析 JSON 文件的意义。
  • 我几天前刚开始使用 Swift,我只是在写一个应用程序来学习!但我肯定会调查的!如果不是太麻烦,你能把链接提供给我吗?

标签: ios core-data


【解决方案1】:

你可以设置一个 NSUserDefaults 来检查它是否是首次运行

这里是代码

let firstRun = NSUserDefaults.standardUserDefaults().boolForKey("firstRun") as Bool
        if !firstRun {
            //run your function
            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstRun")
        }

【讨论】:

【解决方案2】:

Swift 4 示例:

在您的视图控制器中

let firstRun = UserDefaults.standard.bool(forKey: "firstRun") as Bool

然后在你的 viewDidLoad

if firstRun {
    //function you want to run normally
} else {
    runFirst() //will only run once
}

然后把这个函数放在下面

func runFirst() {
    print("FIRST RUN!")
    UserDefaults.standard.set(true, forKey: "firstRun")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多