estoy utilizando la envoltura del FMDatabase SQLite en C Objetivo y tengo el siguiente problema:base de datos SQLite con FMDatabase Envoltura
estoy corriendo un análisis sintáctico XML y el inserto de DB en un subproceso en segundo plano durante algún contenido que el usuario no lo hace tener acceso a, sin embargo, el usuario es capaz de interactuar con una interfaz de usuario y la base de datos de la sección que se encuentran.
The FMDatabase <FMDatabase: 0x17b7b0> is currently in use.
azar, voy a tener una notificación "FMDatabase ya en uso" y la matriz nunca será poblada por la base de datos. Yo estaba bajo la impresión de que la clase FMDatabase manejaría la consulta una vez que quedó libre, pero tengo una:
while(contents.count < 1){
sleep(1);
}
Con la esperanza de que una vez que la base de datos libera, la matriz estará poblado. También he intentado volver a ejecutar la secuencia de comandos de la población de la matriz si la base de datos está ocupada, pero fue en vano.
Lo siento si esta pregunta es confusa, estoy feliz de aclarar.
quiero hacer lo mismo que tú, pero para consulta en FMDatabaseQueue, el resultado debe ser de vuelta asíncrono ..... no es muy conveniente. ¿Tienes alguna sugerencia? – flypig
No tengo el problema en realidad. Edité mi respuesta para agregar un código, adjunte su código si no lo ayuda. – dvkch
el código de bloque es ejecutado por FMDB cola de forma asincrónica, y el R será actualizado en el bloque cuando se ejecuta el código de bloque, pero sólo tiene que devolver la r en la última línea de su procedimiento .... Creo que obtendrá vacía resultado de la consulta a veces, dependiendo del estado de la cola fmdb. Esto me confundió por unos días ... puede ser que pasemos un bloque de finalización para devolver el resultado de la consulta, p. "(BOOL) updateTaskState: (NSNumber *) TaskID withNewStatus: (NSNumber *) Estado de fin de: (void (^) (BOOL R)) terminación;" y llamar a la finalización (r) en el [inDatabase cola:^(FMDatabase * db) {..}] bloque. – flypig