私はターンベースのiOSゲームに取り組んでプレイヤーが参加しているゲームの私のリストを移入しようとしています。ブロックにタグを付けることは可能ですか?
for (unsigned i = 0; i < [matches count]; i++)
{
// Only load data for games in progress.
// NOTE: Might want to handle finished games later.
if ([matches[i] status] != GKTurnBasedMatchStatusEnded)
{
// Send off another block to retrieve the match's data.
[(GKTurnBasedMatch*)matches[i] loadMatchDataWithCompletionHandler: ^(NSData *matchData, NSError *error)
{
// Prepare the game.
Game* game;
if (matchData.length == 0)
{
// If the match data is empty, this is a new game. Init from scratch.
game = [[Game alloc] init];
}
else
{
// Otherwise, unpack the data and init from it.
game = [NSKeyedUnarchiver unarchiveObjectWithData:matchData];
}
game.match = matches[i];
// Load the displayNames for the players.
bool lastIndex = i == ([matches count] - 1);
[self loadPlayerIdentifiersForGame:game intoArray:blockGames lastIndex:lastIndex];
}];
}
}
残念ながら、私はそのインデックスに各ブロックにタグを付けることができない問題が生じています。つまり、i
はブロックが実行されるまでに常に0
です。どのブロックが起動したときにブロックがi
だったかを確認できる方法はありますか?
各ブロックは、ブロックが作成された時点で正確に 'i'の値を取得する必要があります。ブロックが実行されたときに 'i'が常にゼロになるべき理由がわかりません。 –
あなたは私の代わりに試しましたか?__block int j = iをキャプチャしました。それから私はjを使う代わりに? – taffarel