Objective-C运行时 - 如何使用setValue设置CGRect

wha*_*ean 2 objective-c key-value-coding

当该属性是CGRect时,如何设置实例的属性.我想做这个:

CGRect rect = CGRectFromString(value);
[localClassObjectInstance setValue:rect forKey:key];
Run Code Online (Sandbox Code Playgroud)

但编译器不喜欢setValue; 它说我将CGRect发送到不兼容类型'id'的参数.

谢谢

vig*_*o24 9

您必须将CGRect转换为NSValue(反之亦然):


NSValue *myValue = [NSValue valueWithCGRect:rect];
Run Code Online (Sandbox Code Playgroud)

NSValue是一个对象(因此它的类型为"id").

然后你可以回到CGRect:


CGRect myRect = [myValue CGRectValue];
Run Code Online (Sandbox Code Playgroud)