【问题标题】:How to save apps data Xcode如何保存应用程序数据 Xcode
【发布时间】:2011-07-04 09:07:16
【问题描述】:

我已经搜索了很多天来了解如何保存我的应用数据。我找到了一些东西,但它非常复杂并且解释得不好。我需要当我完全关闭我的应用程序时,当我再次打开我的应用程序时,我在文本字段中输入的所有数据仍然存在。我尝试了一个教程,但这只能让我保存大约 8 个文本字段,我需要保存数千个我正在启动 Objective-C 和 Xcode,所以如果有人想给我一个答案,请让它非常精确。

【问题讨论】:

  • 数千个文本字段?你是认真的吗?我会改变应用程序的设计。

标签: objective-c xcode save


【解决方案1】:

如果您计划在关闭应用程序时的几分之一秒内保存数千个文本字段的数据,您的应用程序架构可能不健全。最好在用户输入数据时保存这些数据,而不是等待一次保存所有数据。

【讨论】:

    【解决方案2】:

    要获取您要写入(或读取!)的路径,请执行以下操作:

    NSString *writableDBPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"MyFile.extension"];

    然后使用NSString或NSDictionary等的“writeToFile:automically:”方法写入路径。

    【讨论】:

      【解决方案3】:

      好的,我的建议是将文本字段中的所有数据放入一个数组并将其保存到一个文件中,然后在您重新打开应用程序时加载它。

      您需要的第一件事是保存文件。此函数将为您创建一个。

      -(NSString*) saveFilePath{
      NSString* path = [NSString stringWithFormat:@"%@%@",
                        [[NSBundle mainBundle] resourcePath],
                        @"myfilename.plist"];
      return path;}
      

      现在你需要创建你的保存数组。希望您已经将数千个文本字段放入某种数组中。如果没有,无论您如何处理,这将是一个痛苦的过程。但无论如何......(在这里,labelArray 将是所有文本字段/标签/等的数组。)

      NSMutableArray* myArray = [[NSMutableArray alloc]init];
      int i = 0;
      while(i < labelArray.count){
         [myArray addObject: [labelArray objectAtIndex: i].text];
         i ++;
      }
      [myArray writeToFile:[self saveFilePath] atomically:YES];
      [myArray release];
      

      加载代码类似于

      NSMutableArray* myArray = [[NSMutableArray arrayWithContentsOfFile:[self saveFilePath]]retain];
      

      然后您只需将数据加载回您的文本字段数组中。

      希望这会有所帮助。

      【讨论】:

      • 非常感谢您的帮助。现在我想知道我把这段代码放在哪里,如果我把这段代码放在我的文件中,它会自动保存我所有的文本字段还是我需要告诉他要保存什么文本字段。我不知道数组是什么或如何制作一个。我确实有数以千计的文本字段,但它们被分成 100 个不同的 .h 和 .m 所以如果有人可以向我解释那将是很棒的。谢谢
      • @proticsam 如果您已经创建了数千个文本字段、数百个类,但您仍然不知道数组是什么,那么您可能会遇到比维护应用程序状态更基本的问题。你试过任何 iPhone 教程吗?
      • kubi 说得对,你应该看看一些 iphone 教程。无论如何,您需要将保存代码放在每个 .m 文件的函数中(并使用文件名略有不同的 saveFilePath 函数,这样您就不会覆盖自己的东西。)然后当调用该函数时,您的东西因为那个班级会得救。加载代码只会放在您的 viewDidLoad 文件中(对于视图控制器,您需要一个用于自定义类的新函数)。
      • 感谢您的帮助。在过去的 3 周里,我一直在观看和阅读 iphone 教程,并且有很多很多不好的代码以及过时的代码,所以当每个新版本的 xcode 都发生变化时,很难学习东西。
      • 大家好。我只是用这个问题来帮助我的程序保存一些项目,但是你必须保存为数组吗?或者你可以简单地单独保存每个 NSString 吗?我无法阅读有关重新打开应用程序的信息。
      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 2013-05-05
      • 1970-01-01
      • 2011-11-05
      • 2014-09-26
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多