0

我在尝试索引用户名的数组中重新分配数据时遇到问题。我能够将我的原始数组分成单独的对象,但无法将值发送到我稍后需要引用的新数组。我的行中 userNames 的值和计数self.userNamesArray = userNames;是正确的。但是在那之后,当我登录 self.userNamesArray 时,我得到(null)。任何提示,因为我不完全确定我是欢呼!

。H

@property (nonatomic, copy) NSMutableArray *userNamesArray;

.m

- (void)viewWillAppear:(BOOL)animated {

self.friendsRelation = [[PFUser currentUser] objectForKey:@"friendsRelation"];

PFQuery *query = [self.friendsRelation query];
[query orderByAscending:@"username"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (error) {
        NSLog(@"Error: %@ %@", error, [error userInfo]);
    }
    else {
        self.friends = objects;

        NSArray *users = [self.friends valueForKey:@"username"];
        NSLog(@"username:%@", users);
        //Create an array of name wrappers and pass to the root view controller.
        NSMutableArray *userNames = [[NSMutableArray alloc] initWithCapacity:[self.friends count]];

        for (NSString *user in users) {

        componentsSeparatedByCharactersInSet:charSet];
            NSArray *nameComponents = [user componentsSeparatedByString:@" "];

            UserNameWrapper *userNameWrapper = [[UserNameWrapper alloc]    initWithUserName:nil nameComponents:nameComponents];

            [userNames addObject:userNameWrapper];
        }

        self.userNamesArray = userNames;

        NSLog(@"userNamesArray:%@",self.userNamesArray);

        [self.tableView reloadData];
    }

这是我需要引用 self.userNamesArray 的代码,它再次计算为零。

- (void)setUserNamesArray:(NSMutableArray *)newDataArray {

if (newDataArray != self.userNamesArray) {
    self.userNamesArray = [newDataArray mutableCopy];
    if (self.userNamesArray == nil) {
        self.sectionsArray = nil;
        NSLog(@"user names empty");
    }
    else {
        [self configureSections];
    }
}

}

4

4 回答 4

1

这段代码是递归调用自己的吗?

self.userNamesArray = [newDataArray mutableCopy];

相当于:

[self setUserNamesArray: [newDataArray mutableCopy]];

如果您需要覆盖分配期间发生的事情,您可以像在此处所做的那样做,但使用 _userNamesArray 来引用基础成员字段。

于 2013-10-27T04:58:59.773 回答
1

将可变数组的属性方法更改为以下:-

    @property (nonatomic, retain) 
    NSMutableArray *userNamesArray;
于 2013-10-27T06:56:33.930 回答
0

首先,我不需要“userNamesArray”的 NSMutableArray。你可以简单地使用 NSArray。现在,试试下面的代码,你应该很高兴:

self.userNamesArray = [NSMutableArray arrayWithArray:userNames];
于 2013-10-27T04:38:30.833 回答
0

由于这一行,您可能会得到 null :

NSArray *users = [self.friends valueForKey:@"username"];

将其更改为:

NSArray *users = [self.friends objectForKey:@"username"];

此外,遵循@Abhinav 的建议以获得更简洁的代码:)

于 2013-10-27T05:03:30.817 回答