我在Swift编码。
我创建了一个NSMutableDictionary
,我在里面存储了整数数据,并将字典保存到文件中:
var myDict : NSMutableDictionary
//store Int value
let num : Int = 6
myDict.setValue(num, forKey: “num”)
//save myDict to file
myDict.writeToFile(FILE_PATH, atomically: false)
然后,我有另一种方法从文件中读取字典数据:
let myDictFromFile = NSDictionary(contentsOfFile: FILE_PATH)
//force cast to Int
let num = myDictFromFile?.valueForKey(“num”) as! Int
//COMPILER ERROR: Could not find an overload for ‘+’ that accepts the supplied arguments
let result: Double = num * 30.0 + num * 60.0
为什么我上面遇到编译错误?如何摆脱它?
答案 0 :(得分:1)
Swift不支持这种隐式转换,因此您必须自己明确转换它。 试试这个
let result: Double = Double(num) * 30.0 + Double(num) * 60.0
答案 1 :(得分:0)
我建议你以这种安全的方式进行投射:
if let num = myDictFromFile?.valueForKey("num") as? Double {
let result = num * 30.0 + num * 60.0
}
这样,如果键的字典元素" num"不是双倍,应用程序不崩溃,并没有意外的行为。