Я использую parse.com в качестве backend для своего приложения. Мне нужно получить информацию из моего бэкэнда и запустить экземпляр с этой информацией. я использую этот код для того, чтобы сделать это:переменные экземпляра iOS, не инициализированные изнутри блока
- (id) initWithTeamId:(NSString *)teamId
{
__block NSString *str;
__block FrFTeam *blockSelf = self;
PFQuery *query = [PFQuery queryWithClassName:@"teams"];
[query getObjectInBackgroundWithId:teamId block:^(PFObject *object, NSError *error) {
str = [object objectForKey:@"teamName"];
(void)[blockSelf initWithName:str players:nil thumb:nil];
}];
return self;
}
, когда этот код выполняется self.name устанавливается в нуль, что я делаю не так? спасибо!
спасибо, это все еще не работает, после инициализации: FrFTeam * tmpTeam = [[FrFTeam alloc] init]; и используя ваш метод: [tmpTeam setupWithTeamId: team.objectId]; имя по-прежнему равно нулю –
Сразу после вызова этого метода оно равно nil (и должно быть), так как обработчик завершения в лучшем случае запланирован в END текущей runloop, нет возможности сразу заполнить поле имени без блокировки для запроса. Мое предложение KVO, вы можете прослушать изменение имени (если оно настроено правильно) и действовать при изменении. –