Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c FMDB使用swift-返回布尔值_Objective C_Swift_Fmdb - Fatal编程技术网

Objective c FMDB使用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中提供的功能: 没有给我太多的工作机会 这是我当前在应用程序中使用的现有查询(名称已更改) 此语句运行后,我关闭数据库并返回布尔值。这实际

我目前正在swift中构建一个应用程序,它使用FMDB与存储在设备上的数据库进行交互。我选择使用FMDB是因为我有在Objective C中使用它的经验,而且它说它支持swift

执行语句时,我在swift中返回布尔值时遇到问题。这是我在Objective C类中使用FMDB时可用的更新函数的图像,请注意绝大多数函数是如何返回bools的

以下是swift中提供的功能:

没有给我太多的工作机会

这是我当前在应用程序中使用的现有查询(名称已更改)

此语句运行后,我关闭数据库并返回布尔值。这实际上给了我一个完成块,让我保持UI直到sql成功完成

不幸的是,使用swift时,我需要处理的东西少了很多,而且我并不真正理解返回布尔值的函数输入。到目前为止,在我的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