如何从已销售的类访问合成属性的实例变量

时间:2014-02-24 19:37:24

标签: rubymotion

我正在重新打开一个售卖的objective-c类,但我正在努力以一种干净的方式来访问_username合成的实例变量,以便不会导致无限递归。这似乎应该非常简单,但尚未找到可行的解决方案。

User.h

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface User : NSManagedObject

@property (nonatomic, retain) NSString * username;

@end

user.rb

# reopens User < NSManagedObjectContext
class User

  def username
   # how do i access _username instance var of User.h ??  
  end

end

1 个答案:

答案 0 :(得分:0)

我最初尝试过alias_method :original_username, :username,但因为它们被声明为@dynamic并在运行时生成,所以rubymotion将获得用户名未定义的崩溃。阅读Managed Object Accessor Methods后,我找到了另一种解决方案。

- (NSString *)name
{
    [self willAccessValueForKey:@"name"];
    NSString *myName = [self primitiveName];
    [self didAccessValueForKey:@"name"];
    return myName;
}