我是Core Data
第一次工作.我刚刚创建了一个Entity
与Attributes
该实体.我想添加一些行作为数据(你可以说我想在表中添加数据).
在我使用之前Sqlite
,我会使用Terminal
.但在这里,Core Data
我无法找到手动添加数据的方法.我只是想添加数据Context
并将其显示在一个UITableView
.我已经完成了文档,Core Data
但它没有解释如何手动添加数据,虽然它解释了我如何以编程方式添加它.但我不需要以编程方式执行此操作.我想手动完成.
我对CoreData也很新,并且正在为此寻找解决方案.我很高兴在这里找到一篇文章:http://iphoneinaction.manning.com/iphone_in_action/core-data,了解如何获取CSV文件并导入数据(查找核心数据,第5部分:预填充数据).
这是我使用的代码:
-(void)addData { NSString *paths = [[NSBundle mainBundle] resourcePath]; NSString *bundlePath = [paths stringByAppendingPathComponent:@"file.csv"]; NSString *dataFile = [[NSString alloc] initWithContentsOfFile:bundlePath]; NSArray *dataRows = [dataFile componentsSeparatedByString:@"\n"]; [dataFile release]; MyEntity *myMO;for (int i = 0 ; i < [dataRows count] ; i++) { NSLog(@"Added: %d",i); myMO = (MyEntity *)[NSEntityDescription insertNewObjectForEntityForName:@"MyEntity" inManagedObjectContext:[self managedObjectContext]]; [myMO setAttrib1:[NSNumber numberWithInt:i+1]]; [myMO setAttrib2:[dataRows objectAtIndex:i]]; [self saveAction]; } }
我只有一列,所以我不需要所有的代码.这是文章中的代码.如果没有意义,请尝试查看文章.
CSV文件:
1,A$20,Australian Dollars,20,aussie-20.png 2,R$20,Brazilian Reals,20,brasil-20.png
码:
- (void)setupCards { NSString *paths = [[NSBundle mainBundle] resourcePath]; NSString *bundlePath = [paths stringByAppendingPathComponent:@"cards.csv"]; NSString *dataFile = [[NSString alloc] initWithContentsOfFile:bundlePath]; NSArray *dataRows = [dataFile componentsSeparatedByString:@"\n"]; [dataFile release]; Card *card; for (int i = 0 ; i < [dataRows count] ; i++) { NSArray *dataElements = [[dataRows objectAtIndex:i] componentsSeparatedByString:@","]; if ([dataElements count] >= 4) { card = (Card *)[NSEntityDescription insertNewObjectForEntityForName:@"Card" inManagedObjectContext:[self managedObjectContext]]; [card setId:[NSNumber numberWithInt:i]]; [card setName:[dataElements objectAtIndex:1]]; [card setType:[dataElements objectAtIndex:2]]; [card setWorth:[NSNumber numberWithInt: [[dataElements objectAtIndex:3] intValue]]]; [card setImages:[NSSet setWithObject: [self setupCardPic:[dataElements objectAtIndex:4]]]]; [self saveAction:self]; } } }
回答你的评论:no i want to add data manually, similar to what we do in sqlite through terminal or in sql server using sql query
.下载FireFox并搜索名为的附加工具SQLITE MANAGER
.它允许您打开任何SQLITE数据库,甚至是您的应用程序创建的数据库.SQLITE MANAGER
是SQLITE数据库的GUI,类似于MS SQL Server Management Studio
较少的功能.您可以通过它查看,编辑和添加数据,如果您打算通过Core Data使用数据库,我建议您通过此工具添加数据.您甚至可以将此工具用于您通常通过终端创建的SQLITE数据库(这是我在需要时执行的操作,以及何时不需要使用MS SQL).