Iphone 在iPad上存储数据

Iphone 在iPad上存储数据,iphone,Iphone,我的应用程序需要存储机场列表。此列表需要手动设置,即它不是来自web服务 我正在考虑创建一个核心数据数据库,然后自己输入这个列表。该核心数据库将随应用程序一起提供 你能推荐其他的方法吗?我是否应该使用XML文件或其他方法来实现它?您可以使用plist。 保存字符串列表或其他数据非常容易,无需使用核心数据。 看 例如,此代码将保存一个对象(rootObj),该对象可以是数组或字典: NSString *error; NSString *rootPath = [NSSearchPathForDire

我的应用程序需要存储机场列表。此列表需要手动设置,即它不是来自web服务

我正在考虑创建一个核心数据数据库,然后自己输入这个列表。该核心数据库将随应用程序一起提供

你能推荐其他的方法吗?我是否应该使用XML文件或其他方法来实现它?

您可以使用plist。
保存字符串列表或其他数据非常容易,无需使用核心数据。

例如,此代码将保存一个对象(rootObj),该对象可以是数组或字典:

NSString *error;
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"];
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj
                                                               format:NSPropertyListXMLFormat_v1_0
                                                     errorDescription:&error];
if(plistData) {
  [plistData writeToFile:plistPath atomically:YES];
}
else {
  NSLog(@"Error : %@",error);
  [error release];
}
支持的类有一些限制(请参阅指南)

您可以使用plist。
保存字符串列表或其他数据非常容易,无需使用核心数据。

例如,此代码将保存一个对象(rootObj),该对象可以是数组或字典:

NSString *error;
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"];
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj
                                                               format:NSPropertyListXMLFormat_v1_0
                                                     errorDescription:&error];
if(plistData) {
  [plistData writeToFile:plistPath atomically:YES];
}
else {
  NSLog(@"Error : %@",error);
  [error release];
}

受支持的类有一些限制(请参阅指南)

对于有限的数据,Plist是一个不错的选择,但是如果你有很多数据,你应该使用数据库。它们是好的、可靠的和易于操作的。在各种平台上,更改可以轻松且可靠。主要有两种方法

  • checkandcretae数据库

  • 初始化数据库

  • (void)CheckandcreateDatabase

{

成功

NSFileManager*fileManager=[NSFileManager defaultManager]

n错误*错误

NSArray*Path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,是)

NSString*documentsDirectory=[paths objectAtIndex:0]

NSString*writableDBPath=[DocumentsDirectoryStringByAppendingPathComponent:@“A.sqlite”]

成功=[fileManager fileExistsAtPath:writableDBPath]

如果(成功)返回; //可写数据库不存在,因此请将默认数据库复制到适当的位置

NSString*defaultDBPath=[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@“A.sqlite”]

成功=[fileManager copyItemAtPath:defaultDBPath-toPath:writableDBPath错误:&错误]

如果(!成功) {

NSAssert1(0,@“无法创建带有消息“@.”,[错误本地化描述])的可写数据库文件; }

}

  • (无效)初始化数据库 {
NSArray*Path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,是)

NSString*documentsDirectory=[paths objectAtIndex:0]

NSString*path=[DocumentsDirectoryStringByAppendingPathComponent:@“AutoGraphics.sqlite”]

if(sqlite3_打开([path UTF8String],&database)==SQLITE_确定)

{

//NSLog(@“正常”)

}

否则

{

sqlite3_关闭(数据库)

NSAssert1(0,@“无法打开带有消息“%s”的数据库”,sqlite3_errmsg(数据库))

}

}

在这之后,你可以通过简单的查询通过数据库读取你的值

=>第二种方法是将整个数据存储在本地XML文件中,然后根据您的需要对其进行解析以查找数据。这也很容易


取决于您的需要和熟练程度。

Plist是一个数据有限的好选择,但如果您有大量数据,则应使用数据库。它们是好的、可靠的和易于操作的。在各种平台上,更改可以轻松且可靠。主要有两种方法

  • checkandcretae数据库

  • 初始化数据库

  • (void)CheckandcreateDatabase

{

成功

NSFileManager*fileManager=[NSFileManager defaultManager]

n错误*错误

NSArray*Path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,是)

NSString*documentsDirectory=[paths objectAtIndex:0]

NSString*writableDBPath=[DocumentsDirectoryStringByAppendingPathComponent:@“A.sqlite”]

成功=[fileManager fileExistsAtPath:writableDBPath]

如果(成功)返回; //可写数据库不存在,因此请将默认数据库复制到适当的位置

NSString*defaultDBPath=[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@“A.sqlite”]

成功=[fileManager copyItemAtPath:defaultDBPath-toPath:writableDBPath错误:&错误]

如果(!成功) {

NSAssert1(0,@“无法创建带有消息“@.”,[错误本地化描述])的可写数据库文件; }

}

  • (无效)初始化数据库 {
NSArray*Path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,是)

NSString*documentsDirectory=[paths objectAtIndex:0]

NSString*path=[DocumentsDirectoryStringByAppendingPathComponent:@“AutoGraphics.sqlite”]

if(sqlite3_打开([path UTF8String],&database)==SQLITE_确定)

{

//NSLog(@“正常”)

}

否则

{

sqlite3_关闭(数据库)

NSAssert1(0,@“无法打开带有消息“%s”的数据库”,sqlite3_errmsg(数据库))

}

}

在这之后,你可以通过简单的查询通过数据库读取你的值

=>第二种方法是将整个数据存储在本地XML文件中,然后根据您的需要对其进行解析以查找数据。这也很容易


取决于您的需要和熟练程度。

这完全取决于您希望获得的数据量。
对于少量的数据,一定要使用plists-省去设置数据库的麻烦,而对于大量的数据,或者如果需要不同类型的数据,则需要设置数据库。

这一切都取决于您希望获得的数据量。 对于少量的数据,一定要使用plists——省去了设置数据库的麻烦,而对于大量的数据,或者如果需要不同类型的数据,则需要设置数据库