我有一個大的XML。如果我通過一條記錄將它寫入數據庫,大約2分鐘。這個XML靜態的,它永遠不會更新。因此,創建SQLite數據庫並在Core Data中導入一個表可能很有用?我怎樣才能做到這一點?如何將SQLite表導入核心數據(SQLite)
我看到這個教程(Core Data on iOS 5 Tutorial: How To Preload and Import Existing Data),它並沒有說如何導入表
我有一個大的XML。如果我通過一條記錄將它寫入數據庫,大約2分鐘。這個XML靜態的,它永遠不會更新。因此,創建SQLite數據庫並在Core Data中導入一個表可能很有用?我怎樣才能做到這一點?如何將SQLite表導入核心數據(SQLite)
我看到這個教程(Core Data on iOS 5 Tutorial: How To Preload and Import Existing Data),它並沒有說如何導入表
從sqlite的進口是相當容易的,但沒有記錄足夠恕我直言
它會像:
NSManagedObjectContext *mom = ... ; //your mom
FMDatabase *db = [FMDatabase databaseWithPath:libraryDatabase];
if(![db open]) {
ddprintf(@"Failed to open database at %@", libraryDatabase);
return;
}
if(![db beginTransaction]) {
ddprintf(@"Failed to start Transaction to update database: %d, %@", db.lastErrorCode, db.lastErrorMessage);
[db close];
return;
}
id sql = @"SELECT modelId,imagePath,fileVolumeUuid FROM RKMaster";
FMResultSet *resultSet = [db executeQuery:sql];
while ([resultSet next]) {
//get row values
NSString *modelId = [row stringForColumn:@"modelId"];
NSString *orgFilename = [row stringForColumn:@"imagePath"];
//new MOC
MyEntity *entity = [mom insertNewObjectForEntity:@"myEntity"];
entity.modelId = modelId;
entity.orgFilename = orgFilename;
}
if(![db commit]) {
ddprintf(@"Failed to commit database transaction: %d,%@", [db lastErrorCode], [db lastErrorMessage]);
}
if(![db close]) {
ddprintf(@"Failed to propertly close database at %@", libraryDatabase);
}
。只是一個例子 – 2013-04-29 08:28:12
我可以導入整個表,而不是一行? – wiruzx 2013-04-29 09:23:22
不知道如何..你需要將行映射到mocs – 2013-04-29 09:31:25
你爲什麼要使用一個表?本教程提供的解決方案有什麼問題? – Wain 2013-04-29 07:56:40
@Wain我已經有一個核心數據數據庫,我需要導入唯一的一個表 – wiruzx 2013-04-29 08:00:00
因此,這就像您的用戶已經添加了一些數據,您將發佈一些額外的內容添加到用戶現有的數據。是什麼讓你認爲從SQLite導入會比從XML導入更快?你有沒有分析XML導入?並且在後臺線程(或兩個)上運行XML導入? – Wain 2013-04-29 08:12:34