インスタンスのプロパティが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];
GCRectMac OS X SDKで保存するには、NSRect最初NSRectFromCGRectにNSRectToCGRect関数を使用するように変換する必要があります。iOSには、 代わりにvalueWithCGRect/CGRectValueメソッドがあります(@ viggio24の回答を参照)。