インスタンスのプロパティがCGRectである場合、そのプロパティを設定するにはどうすればよいですか。私はこれをしたい:
CGRect rect = CGRectFromString(value);
[localClassObjectInstance setValue:rect forKey:key];
しかし、コンパイラはsetValueを好みません。互換性のないタイプ「id」のパラメーターにCGRectを送信していると表示されます。
ありがとう
インスタンスのプロパティがCGRectである場合、そのプロパティを設定するにはどうすればよいですか。私はこれをしたい:
CGRect rect = CGRectFromString(value);
[localClassObjectInstance setValue:rect forKey:key];
しかし、コンパイラはsetValueを好みません。互換性のないタイプ「id」のパラメーターにCGRectを送信していると表示されます。
ありがとう
CGRectをNSValue(およびその逆)に変換する必要があります。
NSValue *myValue = [NSValue valueWithCGRect:rect];
NSValueはオブジェクトです(したがって、タイプは「id」です)。
次に、CGRectを次のように戻すことができます。
CGRect myRect = [myValue CGRectValue];
NSValue
値がobj-cオブジェクトでNSNumber
はない場合を処理します。
NSRect rect = ...;
[object setValue:[NSValue valueWithRect:rect] forKey:key];
NSValue* val = [object valueForKey:key];
NSRect extractedRect = [val rectValue];
GCRect
Mac OS X SDKで保存するには、NSRect
最初NSRectFromCGRect
にNSRectToCGRect
関数を使用するように変換する必要があります。iOSには、 代わりにvalueWithCGRect
/CGRectValue
メソッドがあります(@ viggio24の回答を参照)。