检查字典中的对象是否为整数(Swift)

11 浏览
0 Comments

检查字典中的对象是否为整数(Swift)

我对iOS编程还比较新手,还没有完全理解可选类型、向下转型、字典和相关的概念。我非常感谢对以下问题的帮助。\n我正在从数据库下载数据,并希望对数据进行检查,以避免崩溃。在这种特殊情况下,我想检查字典中的一个对象是否为Int,以避免崩溃。\n//下载的字典包含Int、Double和String类型的数据\nvar dictionaryDownloaded:[NSDictionary] = [NSDictionary]()\n//未显示用于将数据下载到字典中的其他代码。\nfor index in 1...dictionaryDownloaded.count {\n let jsonDictionary:NSDictionary = self.dictionaryDownloaded[index]\n if (jsonDictionary[\"SUNDAY OPEN TIME\"] as? [Int]) != nil {\n self.currentlyConstructingRecommendation.sundayOpenTime = jsonDictionary[\"SUNDAY OPEN TIME\"] as! Int!\n }\n self.recommendationsArray.append(currentlyConstructingRecommendation)\n}\n\n我按照这个相关的问题和答案中的方法进行了操作。然而,问题是“if (jsonDictionary[\"SUNDAY OPEN TIME\"] as? [Int]) != nil”这一行永远不会成立。我认为这是因为该值是一个可选对象。我尝试将字典调整为[String:AnyObject]类型,但没有影响。\n我陷入了困境,非常感谢您能提供任何想法。如果有任何更详细的信息有助于解决问题,请告诉我。谢谢!

0
0 Comments

在这段代码中,出现了一个问题:判断字典中的一个对象是否为Int类型。这个问题的出现是因为在代码中混淆了Int(整数)和[Int](整数数组)。同时,代码中还存在冗余的部分。

解决这个问题的方法是使用条件转换(conditional cast)和可选绑定(if let)来实现更安全和更清晰的代码。

首先,将条件转换操作符as?用于将字典中的值转换为Int类型,并使用可选绑定语句if let来判断转换结果是否为nil。如果转换结果不为nil,则将其解包并赋值给sundayOpenTime变量:

if let sundayOpenTime = jsonDictionary["SUNDAY OPEN TIME"] as? Int {

self.currentlyConstructingRecommendation.sundayOpenTime = sundayOpenTime

}

这样,如果转换的结果不为nil,就会将其赋值给sundayOpenTime,并在下一行代码中使用新的常量sundayOpenTime(类型为Int)。如果转换的结果为nil,则整个if语句失败,程序可以安全地继续执行。

通过使用条件转换和可选绑定,我们可以更安全和更清晰地判断字典中的对象是否为Int类型,避免了使用危险的强制转换操作符as!的问题。

最后,原文中的一位读者感谢了这个解决方法,并承认自己之前没有考虑到[Int]数组的情况,感到有些傻。

这篇文章主要介绍了在Swift中判断字典中的对象是否为Int类型的问题,以及如何使用条件转换和可选绑定来解决这个问题。

0
0 Comments

问题的出现原因是代码中的一些错误。首先,使用jsonDictionary["SUNDAY OPEN TIME"] as? [Int]将值转换为Array<Int>,而不是一个Int。其次,在代码中还有一个错误:index in 1...dictionaryDownloaded.count。当index达到dictionaryDownloaded.count时,会导致索引超出范围的异常。

解决方法是对代码进行修正。一种快速修复方法是:for index in 0..<dictionaryDownloaded.count {

let jsonDictionary:NSDictionary = self.dictionaryDownloaded[index]

if (jsonDictionary["SUNDAY OPEN TIME"] as? Int) != nil {

self.currentlyConstructingRecommendation.sundayOpenTime = jsonDictionary["SUNDAY OPEN TIME"] as! Int!

}

self.recommendationsArray.append(currentlyConstructingRecommendation)

}

但我建议你以更符合Swift语言的方式来解决。

一种更符合Swift语言的解决方法是:for jsonDictionary in dictionaryDownloaded {

if let sundayOpenTime = jsonDictionary["SUNDAY OPEN TIME"] as? Int {

self.currentlyConstructingRecommendation.sundayOpenTime = sundayOpenTime

}

self.recommendationsArray.append(currentlyConstructingRecommendation)

}

非常感谢你的帮助,这个方法非常有效。我现在对没有考虑到[Int]数组部分感到有些傻。感谢你帮助我使用更符合Swift语言的方式解决问题!

0