스위프트 3에서 FMDB를 사용하고 있습니다. 스위프트 2에서는 모든 것이 잘 작동했지만 스위프트 업그레이드 후에는 "명령이 신호로 인해 실패했습니다 : 9 "FMDB, Swift 3, executeUpdate - 컴파일러 빌드 실패
그 원인을 조사한 결과, ArgumentsArray에서 약 24 개의 인수로"executeUpdate "를 수행하면 컴파일러가 매우 느려지고 결국 컴파일 오류가 발생 함을 발견했습니다.
배열의 인수 개수를 20 개로 줄이면 컴파일러 빌드가 여전히 느리지 만 성공적으로 완료됩니다.
이유가 무엇인지/도움을 환영합니다 ...!
여기 내 코드입니다 :
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
}
감사합니다. (성공 빌드가 있지만, 컴파일 빌드가 실패하게됩니다 아래의 4 개 라인의 주석을 다른 4 개 라인은 물론 같은 결과를해야합니다)!
에 대한 라인업을 분할 좋을 것 : INSERT the – Gilu
불행히도 도움이되지 않았다. (현재 임시 해결책은 INSERT 연산을 2 개의 연산으로 나눈다. 첫 번째는 처음 8 개 컬럼을 INSERT하고 마지막 16 개 컬럼은 삽입 된 레코드를 UP한다. 내 의견을위한 해결책. – Gilu