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