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