简体   繁体   English

从Sqlite数据库共享扩展面临的问题

[英]Facing Issue with Share Extension from Sqlite database

I have an iOS App which has a sqlite DB and I am trying to implement Share extension. 我有一个具有sqlite DB的iOS应用,我正在尝试实现共享扩展。 Hence, I have this DB shared by the main App as well as the share extension. 因此,我有这个数据库由主应用程序以及共享扩展共享。

Following is my implementation 以下是我的实现

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);

If I put my DB in NSDocument directory (without implementing share extension), everything works fine . 如果我将数据库放在NSDocument目录中(不实现共享扩展名),则一切正常。

However, if I move it to shared directory and implement sharing extension, the app starts to crash when it goes in background . 但是,如果我将其移至共享目录并实现共享扩展,则该应用在后台运行时将开始崩溃。

Following are the logs and unfortunately I have not been able to debug why this is happening. 以下是日志,但不幸的是,我无法调试为什么发生这种情况。 Any help would be truly appreciated 任何帮助将不胜感激

The Crash log differ very time like following 崩溃日志的时间非常不同,如下所示

libsystem_kernel.dylib`mach_msg_trap: 0x31ae8504 <+0>: mov r12, sp 0x31ae8508 <+4>: push {r4, r5, r6, r8} 0x31ae850c <+8>: ldm r12, {r4, r5, r6} 0x31ae8510 <+12>: mvn r12, #30 0x31ae8514 <+16>: svc #0x80 -> 0x31ae8518 <+20>: pop {r4, r5, r6, r8} 0x31ae851c <+24>: bx lr libsystem_kernel.dylib`mach_msg_trap:0x31ae8504 <+0>:mov r12,sp 0x31ae8508 <+4>:推送{r4,r5,r6,r8} 0x31ae850c <+8>:ldm r12,{r4,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>: push {r4, r5, r6, r7, lr} 0x245b6f6a <+2>: add r7, sp, #0xc 0x245b6f6c <+4>: push.w {r8, r10} 0x245b6f70 <+8>: sub sp, #0x8 0x245b6f72 <+10>: mov r4, r0 0x245b6f74 <+12>: movw r0, #0xa10 0x245b6f78 <+16>: movt r0, #0xd9f 0x245b6f7c <+20>: movw r1, #0xa0e 0x245b6f80 <+24>: add 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>: adds r6, r4, r5 0x245b6f94 <+44>: mov r0, r6 0x245b6f96 <+46>: mov r1, r10 0x245b6f98 <+48>: bl 0x24644e10 ; Foundation`- [NSConcreteMapTable dealloc]:0x245b6f68 <+0>:推送{r4,r5,r6,r7,lr} 0x245b6f6a <+2>:添加r7,sp,#0xc 0x245b6f6c <+4>:push.w {r8 ,r10} 0x245b6f70 <+8>:sub sp,#0x8 0x245b6f72 <+10>:mov r4,r0 0x245b6f74 <+12>:movw r0,#0xa10 0x245b6f78 <+16>:movt r0,#0xd9f 0x245b6f7c >:movw r1,#0xa0e 0x245b6f80 <+24>:添加r0,pc 0x245b6f82 <+26>:movt r1,#0xd9f 0x245b6f86 <+30>:添加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; empty 0x245b6f9c <+52>: ldr r0, [r4, r5] 0x245b6f9e <+54>: mov r1, r10 0x245b6fa0 <+56>: ldr r2, [r6, #0x30] 0x245b6fa2 <+58>: blx r2 0x245b6fa4 <+60>: movw r0, #0x9e4 0x245b6fa8 <+64>: mov.w r10, #0x0 0x245b6fac <+68>: movt r0, #0xd9f 0x245b6fb0 <+72>: str.w r10, [r4, r5] 0x245b6fb4 <+76>: add r0, pc 0x245b6fb6 <+78>: ldr.w r8, [r4, r8] 0x245b6fba <+82>: ldr r5, [r0] 0x245b6fbc <+84>: adds r6, r4, r5 0x245b6fbe <+86>: mov r1, r8 0x245b6fc0 <+88>: mov r0, r6 0x245b6fc2 <+90>: bl 0x24644e10 ; 空0x245b6f9c <+52>:ldr r0,[r4,r5] 0x245b6f9e <+54>:mov r1,r10 0x245b6fa0 <+56>:ldr r2,[r6,#0x30] 0x245b6fa2 <+58>:blx r2 0x245b6fa4 < +60>:movw r0,#0x9e4 0x245b6fa8 <+64>:mov.w r10,#0x0 0x245b6fac <+68>:movt r0,#0xd9f 0x245b6fb0 <+72>:str.w 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>:动作r1,r8 0x245b6fc0 <+88>:动作r0,r6 0x245b6fc2 <+90>:bl 0x24644e10; empty -> 0x245b6fc6 <+94>: ldr r0, [r4, r5] 空-> 0x245b6fc6 <+94>:ldr r0,[r4,r5]

etc 等等

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;

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM