我如何才能将类的属性作为方法的参数传递给objective-c

|| 如何在Objective-C中将类的属性作为方法的参数传递? 因此,假设我有: 具有相同属性的动态属性PropA,PropB,PropC的CoreData受管对象类MyData 我有一个utils方法,它将执行计算并更新这些属性之一,该属性将MyData实例作为输入 我该如何安排,以便utils方法可以接受有关在计算和更新中使用哪个属性的指示? (例如PropB) 因此,需要: 一种将属性指示传递给方法的方法(例如,以String形式发送?) 方法中的一种方法(从上面的1开始)并将其用于(a)在该方法具有的MyData实例中访问此属性的值,以及PLUS(b)也更新该属性。     
已邀请:
一个属性将具有setter和getter方法。在您的情况下,我假设有用于setter的setPropA,setPropB,setPropC和用于吸气剂的PropA,PropB,PropC。 然后,我将字符串\“ PropA \”传递给util,表示我要访问名为PropA的属性。 util可以通过获取值
id val = [aObj performSelector:NSSelectorFromString(@\"PropA\")];
并设置属性
[aObj performSelector:NSSelectorFromString(@\"SetPropA\") withObject:newValue];
或者,您可以通过
NSStringFromSelector()
将setter和getter作为参数传递,将选择器转换为NSString。例如,我通过NSDictionary传递了setter和getter。
NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
                          NSStringFromSelector(@selector(setPropA:)), kSetterKey,
                          NSStringFromSelector(@selector(PropA)), kGetterKey, nil];

// inside myUtil
NSString *setter = [userInfo objectForKey:kSetterKey];
[aObj performSelector:NSSelectorFromString(setter) withObject:newValue];
NSString *getter = [userInfo objectForKey:kGetterKey];
id val = [aObj performSelector:NSSelectorFromString(getter)];
希望这可以帮助。     
是的,您可以将属性名称作为字符串传递。 然后,您可以通过键值编码访问指示的属性: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/KeyValueCoding.html 例:
- (void) myUtilMethod: (MyData *) myData
     forPropertyNamed: (NSString *) propName /* which property to operate on (1) */
{
   id oldValue = [ myData valueForKey: propName]; // get value (2a)

   id newValue = ...; // your calculation here

   [myData setValue: newValue forKey: propName]; // set value (2b)
}
    
我不会直接绑定这两个类。您应该设置一个模式设计,通过创建一个在这两者之间建立接口的类,允许您将它们松散地耦合在一起。     

要回复问题请先登录注册