1

我有一个子类 PFObject - Conversation。我需要一个自定义设置器来获取它的users属性。

所以我@dynamic改为@synthesize

@synthesize users = _users;

并设置我的二传手:

-(void)setUsers:(NSArray *)users {
    @synchronized (self)
    {
        _users = users;
        self.numUsers = @(users.count);

        [self setReadWriteACLsForUsers:users];
    }
}

在我的控制器中,我设置users

self.conversation.users = users;

NSLog(@"self.conversation = %@",self.conversation);

我在设置器上设置断点users,它似乎运行良好,但在日志self.conversationusers属性是nil.


编辑

我将我的 setter/getter 更改为:

 -(void)setUsers:(NSArray *)users {
        @synchronized (self)
        {
            [super setObject:users forKey:[Conversation usersKey]];
            self.numUsers = @(users.count);

            [self setReadWriteACLsForUsers:users];
        }
    }

- (NSArray *)users
{
    NSArray *ret = nil;

    @synchronized (self)
    {
        ret = [super objectForKey:[Conversation usersKey]];
    }
    return ret;
}

如果我在 getter 上设置断点,ret则其中包含正确的值。

但是,在同一个conversation实例中,在 XCode 中,我正在为其设置自定义 setter/getter 的两个实例变量显示为 nil:

http://imgur.com/6gjggN2 - 我需要 10 声望才能在线发布图片

所以基本上我的合成实例变量与 PFObject 中的对象键不对应,我不知道如何协调这一点。

4

0 回答 0