【问题标题】:Xcode: Saving an Int value [closed]Xcode:保存一个 Int 值
【发布时间】:2013-02-04 18:52:47
【问题描述】:

我有一个简单的计数器应用程序,即用户按下一个按钮将其增加一个他们选择的值。我在单视图应用程序上开始了应用程序生产。我现在需要这样做,以便在关闭应用程序时保存计数器的最后一个值。然后,当应用重新打开时,它需要将计数器的值加载回原位。只需关闭和打开应用程序即可保存和重新加载该值,即无需按下任何按钮。

我的计数器变量是一个名为counterInt 值。视图控制器被简单命名为viewController.h/m

我不知道如何设置所有这些,我假设我需要 coreData 来执行此操作。如何设置 coreData?我是否在我的 viewController 代表中编码?如果这不是最好的方法,请提供一种更有效的方法!

非常感谢您的帮助,最重要的是简单的说明。 我已经看过其他示例,但似乎没有一个提供我需要的东西或者足够简单易懂。请在此线程上提供答案!

【问题讨论】:

    标签: cocoa-touch core-data xcode4 int


    【解决方案1】:

    使用NSUserDefaults 代替Core Data 是最简单的。

    保存:

    [[NSUserDefaults standardUserDefaults] setInteger:counter forKey:@"counter"]
    

    阅读:

    NSInteger counter = [[NSUserDefaults standardUserDefaults] integerForKey:@"counter"];
    

    查看UIApplicationDelegate 以查找您应该将代码放入哪些方法。它可能会在您的 AppDelegate 中以下列方法之一:

    在哪里加载值:

    • -application:didFinishLaunchingWithOptions:
    • –applicationWillEnterForeground:

    值的保存位置:

    • -applicationDidEnterBackground:
    • –applicationWillTerminate:

    确切的位置取决于您是否需要在用户切换到另一个应用程序时加载和保存该值,几乎可以肯定的是,当应用程序由于内存压力而处于冻结状态时可能会终止。在这种情况下,您需要确保在应用程序处于后台(用户切换到其他应用程序)时保存该值,并在应用程序变为前台应用程序(用户切换回您的应用程序)时恢复该值。

    【讨论】:

    • 这些数据位应该在哪里实现?
    • 我已经更新了我的回答,描述了在哪里添加代码。
    • 感谢您提供额外信息,我有一个警告未使用变量 'counter' 所以我认为这是由于在 viewController 而不是委托中实现的变量。如何让 appDelegate 查看变量的 viewController?
    • 该警告仅仅意味着您创建了变量计数器,但没有在代码中再次使用它。要将数据从应用程序委托传递到您的视图控制器,最好练习使用依赖注入,也就是说,您将在.h 头文件@property (assign) NSInteger counter; 中的视图控制器上创建一个属性,然后在您的 AppDelegate 中,您将计数器分配给该属性viewController.counter = counter;
    • 'viewController.counter = counter;'在哪里这个去吗?
    【解决方案2】:

    您可以使用 NSUserDefaults。 您可以使用

    存储创建 NSUserDefaults 变量的变量
    NSUserDefaults * standardUserDefaults = [NSUserDefaults standardUserDefaults];
    

    然后用

    保存整数
    [standardUserDefaults setInteger:1 forKey:@"integer"];
    

    并与[standardUserDefaults synchronize];同步所有内容

    然后检索创建变量的整数:

    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    

    然后用

    恢复它
    NSInteger myInt = [standardUserDefaults integerForKey:@"integer"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 2015-08-18
      • 2017-10-07
      • 2015-05-01
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多