Ios setValue:forKey和struct

Ios setValue:forKey和struct,ios,swift,swift2,Ios,Swift,Swift2,我有一个关于UIView上的setValue:forKey方法的问题 我有以下代码: let label = UILabel() label.layoutMargins = UIEdgeInsetsMake(10, 10, 10, 10) let margins = label.valueForKey("layoutMargins") 在调试器中,边距的类型为(AnyObject?,其值为Some 如果我使用变量margins设置ui视图上的值,这将按预期工作: let label2 = UI

我有一个关于
UIView
上的
setValue:forKey
方法的问题

我有以下代码:

let label = UILabel()
label.layoutMargins = UIEdgeInsetsMake(10, 10, 10, 10)
let margins = label.valueForKey("layoutMargins")
在调试器中,
边距
的类型为
(AnyObject?
,其值为
Some

如果我使用变量
margins
设置
ui视图上的值
,这将按预期工作:

let label2 = UILabel()
label2.setValue(margins, forKey: "layoutMargins")
但是如果我试图直接使用
setValue:forKey
方法设置UIEdgeInsets结构,这当然不起作用,因为它需要
AnyObject
而不是结构

label2.setValue(UIEdgeInsetsMake(5,5,5,5), forKey: "layoutMargins")

我是否可以将此
UIEdgeInsets
包装在某个东西中或将其强制转换为某个东西,以便能够使用该
setValue
方法设置值?

您需要将
UIEdgeInsets
包装为
NSValue
。iOS已经通过提供了必要的支持,因此解决方案应如下所示:

label2.setValue(NSValue(UIEdgeInsets: UIEdgeInsetsMake(5,5,5,5)), forKey: "layoutMargins")