不要使用 CoreData 来“从 sqlite 数据库中获取数据”。如果您需要“从 sqlite 数据库中获取数据”,请使用FMDB或类似工具。FMDB 是用于 iOS 的 sqlite3 的包装器。您应该能够直接复制您的select
语句并将它们包装到 FMDB 中。
使用 CoreData 但用 SQL 语言思考只会造成混乱。如果您打算使用 CoreData,那么最好忽略 CoreData 使用 sqlite db 作为持久存储这一事实,并忘记您对 sql 语言的了解。
CoreData 是一个对象图框架而不是数据库接口。它碰巧默认将数据存储到 sqlite db,但从程序员的角度来看,使用是在对象方面。它不是在行和表方面。
回到 FMDB。在那里,打开一个数据库:
FMDatabase *theDatabase = [FMDatabase databaseWithPath:pathToDB];
select
使用语句检索存储的行:
FMResultSet *setOfRows = [db executeQuery:@"select * from tableName where attribute = ?", @"some criteria'"];
然后使用 a 遍历检索到的行while
:
while ([setOfRows next]) {
NSLog(@"%d %@ %@ %f", // simply print to the console
[rs intForColumn:@"integerColumn"],
[rs stringForColumn:@"attribute"],
[rs dateForColumn:@"dateColumn"],
[rs doubleForColumn:@"doubleValue"]);
}
您应该能够保留在 android 下设计数据库布局的所有工作。只需包装访问部分。有关语法的更多信息,FMDB的 github 页面上有一个很好的自述文件