2011-01-31 158 views
2

如何导入CSV到源码(对于iphopne核心数据)导入CSV到coredata SQLite,让iphone

我已经使用SQLite经理试过,但它导入CSV文件中的新表,我也需要进口一些日期,

  • 那么如何将数据导入到我的sqlite数据库?我有3个具有不同属性的实体,并且在csv中我有一个csv中的所有值(所以我可以根据需要对其进行格式化或更改),但是如何重新定义它?

  • 什么是coredata喜欢的日期格式?

在此先感谢!

回答

3

我假设你有设置您的CoreData和一个运行良好。你并不想直接使用核心数据的sqlite数据库。这是可能的,但也有点混乱。

  • 使用其中一个浮动的CSV扫描器将CSV数据读入字段。
  • 根据需要将CSV字段映射到您的实体及其属性。 您可能想要使用CSV标头验证您的映射CSV列到属性是否正常。
  • 循环遍历CSV行并逐行更新您的实体。
  • 根据数据量,您可能需要定期保存上下文。

核心数据喜欢NSDate。无论CSV文件在数据列中使用什么,您最好将CSV值转换为NSDate。在您的应用程序中使用NSDate将减少以后的头痛事件的数量。

0

我会建议,首先在应用程序中使用Core Data创建sqlite数据库,然后使用由Core数据创建的数据库导入csv数据。

您可以使用命令行命令在sqlite文件中导入数据。

将sqlite文件添加到项目中。

更换和添加​​persistentStoreCoordinator方法这里面代码..

NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"yourDatabase.sqlite"]; 
/* 
Set up the store. 
For the sake of illustration, provide a pre-populated default store. 
*/ 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
// If the expected store doesn’t exist, copy the default store. 
if (![fileManager fileExistsAtPath:storePath]) { 
    NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"yourDatabase" ofType:@"sqlite"]; 
    if (defaultStorePath) { 
     [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL]; 
    } 
} 

更改方法

- (NSString *)applicationDocumentsDirectory { 
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
}