0

在程序中,我使用此方法创建一个可以保存的文件:

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

然后我使用一个按钮来启动将数据放入文件的过程(我首先将它们全部放入一个数组中,这样会更容易。):

- (IBAction)save
{

NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject:name.text];
[myArray addObject:position.text];
[myArray addObject:cell.text];
[myArray addObject:office.text];
[myArray addObject:company.text];
[myArray writeToFile:[self saveFilePath] atomically:YES];

}

最后,我将信息加载回 - (void)viewDidAppear 方法中的文本字段中。

- (void)viewDidAppear:(BOOL)animated
{
NSMutableArray* myArray = [NSMutableArray arrayWithContentsOfFile:[self saveFilePath]];
name.text = [myArray objectAtIndex:0];
position.text = [myArray objectAtIndex:1];
cell.text = [myArray objectAtIndex:2];
office.text = [myArray objectAtIndex:3];
company.text = [myArray objectAtIndex:4];
}

出于某种原因,在模拟器上它在模拟器上完美运行,但当我尝试在我的物理 iPhone 上运行时根本无法运行。

4

1 回答 1

3

我认为您正在尝试保存到 iOS 上只读的位置。它可以在模拟器上运行,因为模拟器不会完全复制实际硬件上的沙盒环境。

而不是保存到resourcesPath您应该将文件保存到Documents目录(或缓存目录,如果合适的话)。

您可以获得文档目录的路径,如下所示:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

这里有更多关于这个问题的信息:How to save file in an app of an app in Objective-c

于 2012-07-11T15:44:21.133 回答