/ / FMDB, Swift 3, executeUpdate - compilação de compilação falhou - compilação, swift3, fmdb

FMDB, Swift 3, executeUpdate - compilação de compilação falhou - compilação, swift3, fmdb

Eu estou usando o FMDB com o Swift 3. Tudo funcionou bem em Swift 2, mas depois de fazer o upgrade Swift eu estou ficando: "Comando falhou devido a sinal: Killed: 9"

Depois de investigar a causa disso, descobri que executar "executeUpdate" com cerca de 24 argumentos no ArgumentsArray faz com que o compilador fique muito lento e, finalmente, retorne o erro de compilação.

Ao diminuir o número de argumentos na matriz para 20, a compilação do compilador ainda é lenta, mas pode ser concluída com êxito.

Qualquer ideia de porque / ajuda será bem-vinda ...!

Aqui está o meu código: (Construa sucesso, mas descomentando as 4 linhas abaixo fará com que a compilação falhe. Quaisquer outras 4 linhas terão o mesmo resultado, é claro)

func insertLocalization(_ localization: Localization) -> Bool {
print ("Insert Localization: (localization.localization_object_id!)#(localization.spot_object_id!)#(localization.language_code!)")
sharedInstance.database!.open()
let isInserted = sharedInstance.database!.executeUpdate(
"INSERT INTO localizations (" +
"localization_object_id, " +
"spot_object_id, " +
"language_code, " +
"current_location_enabled, " +
"spot_title, " +
"spot_desc, " +
"local_assistant_phone, " +
"orientation_360_enabled, " +
"direction_n_title, " +
"direction_n_desc, " +
"direction_ne_title, " +
"direction_ne_desc, " +
"direction_e_title, " +
"direction_e_desc," +
"direction_se_title, " +
"direction_se_desc, " +
"direction_s_title, " +
"direction_s_desc, " +
"direction_sw_title, " +
"direction_sw_desc, " +
"direction_w_title, " +
"direction_w_desc, " +
"direction_nw_title, " +
"direction_nw_desc) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
withArgumentsIn: [
// localization.localization_object_id!,
// localization.spot_object_id!,
// localization.language_code!,
// localization.current_location_enabled!,
localization.spot_title!,
localization.spot_desc!,
localization.local_assistant_phone!,
localization.orientation_360_enabled!,
localization.direction_n_title!,
localization.direction_n_desc!,
localization.direction_ne_title!,
localization.direction_ne_desc!,
localization.direction_e_title!,
localization.direction_e_desc!,
localization.direction_se_title!,
localization.direction_se_desc!,
localization.direction_s_title!,
localization.direction_s_desc!,
localization.direction_sw_title!,
localization.direction_sw_desc!,
localization.direction_w_title!,
localization.direction_w_desc!,
localization.direction_nw_title!,
localization.direction_nw_desc!
])
sharedInstance.database!.close()
return isInserted
}

Obrigado!

Respostas:

0 para resposta № 1

Este código compila sem incidentes para mim no Xcode 8.0 (8A218a). Mas se isso não está funcionando para você, eu sugiro dividir a linha, por exemplo

let values =  [localization.localization_object_id!, ..., localization.direction_nw_desc!]

let isInserted = sharedInstance.database!.executeUpdate(
"INSERT INTO localizations (...) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
withArgumentsIn: values)