2015-12-28 52 views
-1

我有一個iOS應用程序有一個SQLite數據庫,我試圖實現共享擴展。因此,我有這個數據庫共享的主要應用程序以及共享擴展。面對Sqlite數據庫共享擴展問題

以下是我實現

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error; 
NSString *AppGroupId = @"XXXX"; 
NSURL *groupContainerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:AppGroupId]; 
NSString *sharedDirectory = [groupContainerURL path]; 
sqliteDb = [sharedDirectory stringByAppendingPathComponent:@"MYDB.sqlite"]; 
success = [fileManager fileExistsAtPath:sqliteDb]; 
NSLog(@"path : %@", sqliteDb); 

如果我把我的數據庫中NSDocument目錄(沒有實施股擴展名),一切工作正常。

但是,如果我將其移動到共享目錄並實現共享擴展,則應用程序在後臺中開始崩潰

以下是日誌,不幸的是我還沒有能夠調試爲什麼發生這種情況。任何幫助,將真正的讚賞

崩潰日誌非常不同時間 像下面

libsystem_kernel.dylib`mach_msg_trap: 0x31ae8504 < + 0>:MOV R12,SP 0x31ae8508 < +4>:推{R4,R5,R6,R8} 0x31ae850c < 8>:LDM R12,{[4-,R5,R6} 0x31ae8510 < 12>:MVN R12,#30 0x31ae8514 < 16>:SVC#0x80的 - > 0x31ae8518 < +20>:pop {r4,r5, R6,R8} 0x31ae851c < 24>:BX LR

Foundation`- [NSConcreteMapTable的dealloc]: 0x245b6f68 < 0>:推{R4,R5,R6,R7,LR} 0x245b6f6a < 2> :添加R7,SP,#位於0xC 0x245b6f6c < 4>:PUSH.W {R8,R10} 0x245b6f70 < 8>:分屬,#0x8中 0x245b6f72 < 10>:MOV R4,R0 0x245b6f74 < + 12>:movw r0,#0xa10 0x245b6f78 < +16>:movt r0,#0xd9f 0x245b6f7c < +20>:movw r1,#0xa0e 0x245b6f80 < 24>:添加R0,PC 0x245b6f82 < 26>:MOVT R1,#0xd9f 0x245b6f86 < 30>:ADD R1,PC 0x245b6f88 < 32>:LDR.W R8,[R0] 0x245b6f8c < 36>:LDR R5,[R1] 0x245b6f8e < 38>:LDR.W R10,[R4,R8] 0x245b6f92 < 42>:添加R6,R4,R5 0x245b6f94 < 44>:MOV r0,r6 0x245b6f96 < +46>:mov r1,r10 0x245b6f98 < +48>:bl 0x24644e10;空 0x245b6f9c < 52>:LDR R0,[R4,R5] 0x245b6f9e < 54>:MOV R1,R10 0x245b6fa0 < 56>:LDR R2,[R 6,#的0x30] 0x245b6fa2 < 58>: BLX R2 0x245b6fa4 < 60>:MOVW R0,#0x9e4 0x245b6fa8 < 64>:MOV.W R10,#爲0x0 0x245b6fac < 68>:MOVT R0,#0xd9f 0x245b6fb0 < 72>:STR。瓦特R10,[R4,R5] 0x245b6fb4 < 76>:添加R0,PC 0x245b6fb6 < 78>:LDR.W R8,[R4,R8] 0x245b6fba < 82>:LDR R5,[R0] 0x245b6fbc < 84>:添加R6,R4,R5 0x245b6fbe < 86>:MOV R1,R8 0x245b6fc0 < 88>:MOV R0,R6 0x245b6fc2 < 90>:BL 0x24644e10;空 - > 0x245b6fc6 < +94>:LDR R0,[R4,R5]

回答

0
NSString * const DataBaseName = @"MYDB.sqlite"; 



-(BOOL) createDataBase 
{ 

BOOL success; 

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:DataBaseName]; 

success = [fileManager fileExistsAtPath:writableDBPath]; 
if (success) return success; 
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:DataBaseName]; 
success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error]; 

if (!success) { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!!!" message:@"Failed to create writable database..." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; 
    [alert show]; 
} 
return success; 

} 
+0

嗨普拉迪普日Thnx的答覆!但我想告訴你pradip,我面臨的問題是,當我嘗試通過使用APP Group與共享擴展共享它時,在共享目錄內存儲sqlite數據庫。 –