iPhone持久存储

iPhone持久存储,iphone,objective-c,cocoa,cocoa-touch,Iphone,Objective C,Cocoa,Cocoa Touch,我需要在应用程序执行时存储某些信息,并在应用程序启动时再次获取这些信息。我尝试使用GData将其存储在XML中,但没有成功。 我使用了NSFileHandle,它不会给我一个错误,但它无法创建一个用于读/写目的的.txt文件。有没有其他方法可以在iPhone上存储和检索数据。下面是我的NSFileHandle代码 NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFi

我需要在应用程序执行时存储某些信息,并在应用程序启动时再次获取这些信息。我尝试使用GData将其存储在XML中,但没有成功。 我使用了NSFileHandle,它不会给我一个错误,但它无法创建一个用于读/写目的的.txt文件。有没有其他方法可以在iPhone上存储和检索数据。下面是我的NSFileHandle代码

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFile.txt"];
//NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:@"file://localhost/Users/shraddha/Desktop/info.txt"];
NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:@"myFile.txt"];
[fh seekToEndOfFile];
NSData *data = [camName dataUsingEncoding:NSASCIIStringEncoding];
[fh writeData:data];
[fh closeFile];
阅读

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFile.txt"];
//NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"file://localhost/Users/shraddha/Desktop/info.txt"];
NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"myFile.txt"];
if(fh == nil)
    return nil;
else
{
    NSData *data = [fh readDataOfLength:8];
    NSString *retStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    return retStr;
}

您可以使用sqlite数据库在iPhone上存储持久数据。以下是一篇博客文章,应该能让你找到正确的方向:


您可以使用sqlite数据库在iPhone上存储持久数据。以下是一篇博客文章,应该能让你找到正确的方向:


每个iPhone应用程序都有读/写名称/值对的能力,这对于存储用户偏好等小信息非常有用。应用程序的用户也可以编辑这些首选项(如果您选择)


另一个比尝试进行文本文件存储和检索(我从不喜欢这个选项,尤其是iPhone上糟糕的XML解析支持)更健壮的选项是sqlite。sqlite是一个非常轻量级的关系数据库引擎,包含在每个iPhone和iPod touch中。

每个iPhone应用程序都具有读取/写入名称/值对的能力,这对于存储用户偏好等小信息非常有用。应用程序的用户也可以编辑这些首选项(如果您选择)


另一个比尝试进行文本文件存储和检索(我从不喜欢这个选项,尤其是iPhone上糟糕的XML解析支持)更健壮的选项是sqlite。sqlite是一个非常轻量级的关系数据库引擎,包含在每个iPhone和iPod touch中。

您正在尝试写入资源目录,而您可能没有这样做的权限。尝试更改代码的第一行以指向文档目录:

NSArray *savePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSMutableString *savePath = [NSMutableString stringWithString:[savePaths objectAtIndex:0]];
[savePath appendString:@"/myFile.txt"];
此外,您不需要担心文件句柄
NSData
能够将自身写入磁盘:

BOOL result = [data writeToFile:savePath atomically:YES];

您正在尝试写入资源目录,但您可能没有这样做的权限。尝试更改代码的第一行以指向文档目录:

NSArray *savePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSMutableString *savePath = [NSMutableString stringWithString:[savePaths objectAtIndex:0]];
[savePath appendString:@"/myFile.txt"];
此外,您不需要担心文件句柄
NSData
能够将自身写入磁盘:

BOOL result = [data writeToFile:savePath atomically:YES];