entityDescription];
// 操作语句的条件
NSPredicate *pred = [NSPredicate predicateWithFormat:@"PREDICATE_SECTION"];
[request setPredicate:pred];
NSManagedObject *manageObject = nil;
// 执行操作,得到多条具体数据
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error];
if (objects == nil) {
// 出错
}
if ([objects count] > 0)
// 多条,取第一条
manageObject = [objects objectAtIndex:0];
else
// 没有相应的,就创建
manageObject = [NSEntityDescription
insertNewObjectForEntityForName:@"TABLE_NAME"
inManagedObjectContext:managedObjectContext];
// 改变她的一个字段的值
[manageObject setValue:@"VALUE" forKey:@"ONE_FIELD_NAME_OF_THE_TABLE"];
[request release];
// 保存,结束
[managedObjectContext save:&error];
(四).SQLite
引入SQLite库,加入头文件,使用C API操作.繁琐的地方在于只能存储c数据格式,需要来回转换.
过程示例:
// 声明数据库
sqlite3 *database;
// 打开
if (sqlite3_open("数据库文件路径", &database) != SQLITE_OK) {
sqlite3_close(database);
// 出错
}
char *errorMsg;
// 执行无返回语句
if (sqlite3_exec (database, "增删改创语句",NULL, NULL, &errorMsg) != SQLITE_OK) {
sqlite3_close(database);
// 出错
}
sqlite3_stmt *statement;
// 执行查询语句
if (sqlite3_prepare_v2(database, "查询语句",-1, &statement, nil) == SQLITE_OK) {
// 遍历结果
while (sqlite3_step(statement) == SQLITE_ROW) {
int row = sqlite3_column_int(statement, 0);
// 第一列数据
char *rowData = (char *)sqlite3_column_text(statement, 1);
}
// 结束遍历
sqlite3_finalize(statement);
}
// 关闭数据库
sqlite3_close(database);
参考1:http://stackoverflow.com/questions/2985054/what-exactly-is-a-fetched-property
作者 v2m