我有一个使用核心数据的应用。如何以编程方式获得实体的描述,即SQL创建代码,如:
CREATE TABLE Cities(cityName TEXT);
任何帮助都将不胜感激。
答案 0 :(得分:1)
你可以试试这个:
NSEntityDescription *desc = [NSEntityDescription entityForName:@"Cities" inManagedObjectContext:context];
希望这有帮助。
答案 1 :(得分:1)
我不确定你为什么要这样做,实际上,你可能不想这样做,但你可以用这样的东西(使用FMDB https://github.com/ccgus/fmdb)来做:
NSString *dbPath = @"/path/to/my/CoreData/repository.sqlite"; // use NSBundle for actual code
NSString *entityName = @"Cities";
NSString *tableName = [NSString stringWithFormat:@"Z%@", [entityName uppercaseString]];
FMDatabase *database = [FMDatabase databaseWithPath:dbPath];
if (database.open) {
NSString *query = [NSString stringWithFormat:@"SELECT sql FROM sqlite_master WHERE name = '%@';", tableName];
FMResultSet *results = [database executeQuery:query];
while([results next]) {
NSString *sql = [results stringForColumnIndex:0];
return sql;
}
}
当然,这假设您的CoreData应用程序使用SQLite存储库(通常情况下)。
以下是我的一个名为FormInstance
的实体:
CREATE TABLE ZFORMINSTANCE ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZDEF INTEGER, ZCREATED TIMESTAMP, ZSENT TIMESTAMP, ZIDENTIFIER VARCHAR, ZLABEL VARCHAR, ZUSER VARCHAR )
该实体具有以下属性:
created
identifier
label
sent
user
这些关系:
def
roles
values
CoreData结构的映射是:
使用风险自负