Objective c FMDB使用swift-返回布尔值
我目前正在swift中构建一个应用程序,它使用FMDB与存储在设备上的数据库进行交互。我选择使用FMDB是因为我有在Objective C中使用它的经验,而且它说它支持swift 执行语句时,我在swift中返回布尔值时遇到问题。这是我在Objective C类中使用FMDB时可用的更新函数的图像,请注意绝大多数函数是如何返回bools的 以下是swift中提供的功能: 没有给我太多的工作机会 这是我当前在应用程序中使用的现有查询(名称已更改) 此语句运行后,我关闭数据库并返回布尔值。这实际上给了我一个完成块,让我保持UI直到sql成功完成 不幸的是,使用swift时,我需要处理的东西少了很多,而且我并不真正理解返回布尔值的函数输入。到目前为止,在我的swift数据库类中,我运行如下更新:Objective c FMDB使用swift-返回布尔值,objective-c,swift,fmdb,Objective C,Swift,Fmdb,我目前正在swift中构建一个应用程序,它使用FMDB与存储在设备上的数据库进行交互。我选择使用FMDB是因为我有在Objective C中使用它的经验,而且它说它支持swift 执行语句时,我在swift中返回布尔值时遇到问题。这是我在Objective C类中使用FMDB时可用的更新函数的图像,请注意绝大多数函数是如何返回bools的 以下是swift中提供的功能: 没有给我太多的工作机会 这是我当前在应用程序中使用的现有查询(名称已更改) 此语句运行后,我关闭数据库并返回布尔值。这实际
try! db.executeUpdate(sqlStatement, values: dataArray)
给我安全感,如果失败了,但没有办法回报成功。我想知道是否有人对实现我在objective c中展示的数据库类有什么建议
我能看到的唯一选择是在objective c中重写类,但是我更愿意让这个应用程序100%快速
“将Swift与Cocoa和Objective-C结合使用”参考:
Swift自动将产生错误的Objective-C方法转换为根据Swift本机错误处理功能抛出错误的方法
因此,客观C方法
- (BOOL)executeUpdate:(NSString *)sql values:(NSArray *_Nullable)values error:(NSError *_Nullable __autoreleasing *)error
映射为
func executeUpdate(sql: String, values: [Any]?) throws
进入Swift,并且必须使用(的变体)try
调用
如果您只对成功/失败状态感兴趣,而不是
在实际错误消息中(如目标代码中),然后
您可以使用try?
,如果评估失败,它的评估结果为nil
:
let success = (try? db.executeUpdate(sqlStatement, values: dataArray)) != nil
@马丁纳:我担心你会这么说。请注意,
试试看代码>不会给您带来安全。如果语句失败,我将以运行时异常中止程序。
let success = (try? db.executeUpdate(sqlStatement, values: dataArray)) != nil