Ios 检查swift中的null值(不是nil或NSnull)是否总是返回nil?

Ios 检查swift中的null值(不是nil或NSnull)是否总是返回nil?,ios,objective-c,swift,string,sqlite,Ios,Objective C,Swift,String,Sqlite,我正在从事一个项目,该项目使用swift和目标c。我之前的团队成员已经用我不熟悉的objective C编写了这段代码。有一个问题是,涉及存储和检索Sqlite值的大部分内容都在OBJC中。这是在一个公共类中完成的,以避免代码赎回。但是,如果我使用swift通过obj C文件检索值,就会出现问题。如果指定行中没有值,则返回null 更新:检查了Antony Raphel所说的可选绑定 即使我在转换为“as”之前直接检查nil?字符串“相同的错误仍然存在。我知道swift中没有null的等价物。

我正在从事一个项目,该项目使用swift和目标c。我之前的团队成员已经用我不熟悉的objective C编写了这段代码。有一个问题是,涉及存储和检索Sqlite值的大部分内容都在OBJC中。这是在一个公共类中完成的,以避免代码赎回。但是,如果我使用swift通过obj C文件检索值,就会出现问题。如果指定行中没有值,则返回null

更新:检查了Antony Raphel所说的可选绑定

即使我在转换为“as”之前直接检查nil?字符串“相同的错误仍然存在。我知道swift中没有null的等价物。swift中的值为空null是否存在任何漏洞

if let prevNotifCount = self.cmmn.getPreviousNotificationCount() as? String
{
   self.cmmn.saveInDatabase("19", phoneNumber: "0", otp: "0")
   print(self.cmmn.getPreviousNotificationCount())
} 
else
{
    print("No previous notification value")
}

这是标准的Swift方法,称为可选绑定。您可以安全地展开一个可选项,如果它不是nil,则将其分配给一个局部变量

尝试添加if-let来检查nil条件,如下所示:-

if let NotifCount = self.cmmn,getPreviousNotificationCount() as? String

{
    prevNotifCount = NotifCount
}
请试试这个,希望对你有帮助

使用if-let语句

if let preNotifCount = self.cmmn.getPreviousNotofication {
      //business logic
}
现在,只有当preNotifCount不是零时,才会执行业务逻辑。

只需替换您的

var prevNotifCount = self.cmmn.getPreviousNotificationCount() as? String
和使用

  guard let prevNotifCount = self.cmmn.getPreviousNotificationCount()      else{
              print("No previous notification value") 
              return 
        }

无需检查nil,如果失败,将执行else块

您可以直接检查字符串==这解决了我的问题。转换为as?字符串始终返回null。。我已将您的帖子编辑为解决我问题的代码