2015-05-14 58 views
0

我有一個應用程序生活在應用程序商店本地存儲數據在sqlite數據庫。現在我想在最新版本中使用核心數據,我如何能夠使用核心數據同步sqlite數據並使用核心數據繼續我的應用程序? 考慮用戶是否打開了應用程序,那麼他的數據應該與iCloud數據同步,並且在使用該應用程序時不會對用戶造成干擾。如何使用Core Data同步sqlite數據庫?

+0

在coredata中創建一個類似模式,並遷移coredata中的所有sqlite行 – Mukesh

回答

0
self.dbManager = [[DBManager alloc] initWithDatabaseFilename:@"revampadhocdb.sql"]; 
NSString *adhocquery = @"select * from revampadhoctable"; 

NSArray *adhoctemp = [[NSArray alloc] initWithArray:[self.dbManager loadDataFromDB:adhocquery]]; 
NSLog(@"adhoc Databse%@",adhoctemp); 

//From Adhoc Database fill some data 
for (int i=0; i<adhoctemp.count; i++) { 

    DigitalConatct *dgContact=[[DigitalConatct alloc] init]; 
    [dgContact setDgName:[[adhoctemp objectAtIndex:i] objectAtIndex:1]]; 
    [dgContact setBirthDate:[[adhoctemp objectAtIndex:i] objectAtIndex:2]]; 
    [dgContact setContactUrl:[[adhoctemp objectAtIndex:i] objectAtIndex:3]]; 
    [dgContact setDgtype:@"Adhoc"]; 
    [dgContact setDigitalImage:nil]; 
    [dgContact setSubType:@"Person"]; 
    [dgContact setSubTypeName:[[adhoctemp objectAtIndex:i] objectAtIndex:4]]; 
    [dgContact setSubTypeDesc:[[adhoctemp objectAtIndex:i] objectAtIndex:5]]; 
    [dgContact setSummary:[[adhoctemp objectAtIndex:i] objectAtIndex:6]]; 
    [dgContact setDg_ID:[NSNumber numberWithInt:[[[adhoctemp objectAtIndex:i] objectAtIndex:0] intValue]]]; 


    [self insertNewDAObject:dgContact]; 
} 

#pragma mark insert 
- (DAContact *)insertNewDAObject:(DigitalConatct *)daDemo 
{ 
NSManagedObjectContext *context = [self managedObjectContext]; 
DAContact *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"DAContact" inManagedObjectContext:context]; 

newDevice.dgcontact=daDemo; 
newDevice.active=[NSNumber numberWithBool:YES]; 
newDevice.type=daDemo.dgtype; 
newDevice.dgname=daDemo.dgName; 

// Save the context. 
NSError *error = nil; 
if (![context save:&error]) { 
    // Replace this implementation with code to handle the error appropriately. 
    // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); 
} 

return newDevice; 

} 

使coredata一個simlar模式和遷移在coredata。下面的sqlite的所有行的例子,其中我已經遷移的revampadhoctable所有行的核心數據,並手動插入

0

這樣做是唯一的出路自己動手做。如,寫自己的自定義代碼,

  • 從當前的SQLite文件讀取數據
  • 將其寫入到一個新的核心數據持久性存儲

核心數據可以使用SQLite,但它的模式贏得了」 t和你在SQLite文件中使用的一樣,所以這是唯一的方法。

這裏假定您確實意味着您想要將SQLite文件中的數據一次性移動到Core Data中。這就是你的問題描述,即使你的主題行說「同步」。保持數據的兩個不同副本同步是一個更復雜的問題。

相關問題