Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
在Swift中将字典值转换为CGFloat_Swift - Fatal编程技术网

在Swift中将字典值转换为CGFloat

在Swift中将字典值转换为CGFloat,swift,Swift,我正在尝试将字典中存储的值转换为CGFloat let dict:Dictionary <String, Any> = ["num": 100] let cgf = CGFloat(d["num"] as Double) let view = UIView() view.frame = CGRectMake(cgf,200,10,10) 有人能解释一下我做错了什么吗 非常感谢 “Any可以表示任何类型的实例,包括函数类型” 摘自:苹果公司《Swift编程语言》。iBooks An

我正在尝试将字典中存储的值转换为CGFloat

let dict:Dictionary <String, Any> = ["num": 100]
let cgf = CGFloat(d["num"] as Double)

let view = UIView()
view.frame = CGRectMake(cgf,200,10,10)
有人能解释一下我做错了什么吗


非常感谢

“Any可以表示任何类型的实例,包括函数类型”

摘自:苹果公司《Swift编程语言》。iBooks

Any
无法强制向下播放到
Double

您的字典可以包含任何类型的对象,强制向下转换并不总是成功。

您正在试验的问题是,在Swift
Double
中,
Float
Int
等不是对象,而是结构。您必须将该值强制转换为
NSNumber
,然后从中获取
floatValue
。大概是这样的:

let dict:Dictionary <String, Any> = ["num": 100]
let cgf = dict["num"] as? NSNumber
NSLog("Float: %f", cgf!.floatValue)

let view = UIView()
view.frame = CGRectMake(CGFloat(cgf!.floatValue),200,10,10)

Double
Float
Int
被定义为结构,我认为它们是对象。你有什么理由将其强制为可选的吗?如果我能保证字典总是在
num
下有一个数字值,我能安全地去掉可选的吗?@Swipesight你是对的,它们是结构没有文字,但这并不意味着它们是对象,它们是结构;)因此你不能沮丧directly@Jimmery如果可以保证字典始终包含该值,则无需将其设置为可选
let dict:Dictionary <String, Any> = ["num": 100]
let cgf = dict["num"] as? NSNumber
NSLog("Float: %f", cgf!.floatValue)

let view = UIView()
view.frame = CGRectMake(CGFloat(cgf!.floatValue),200,10,10)
let cgf = dict["num"] as NSNumber

let view = UIView()
view.frame = CGRectMake(CGFloat(cgf.floatValue),200,10,10)