In my case this error was due to me using an incorrect (old) match object to end the turn. Apparently, this object changes during the game, and you need to renew your stored match instance with what you get in handleTurnEventForMatch every time it gets called. Like Ray said,
- (void) handleTurnEventForMatch:(GKTurnBasedMatch *)match
{
NSLog(@"Turn has happened");
if ([match.matchID isEqualToString:currentMatch.matchID])
{
...
self.currentMatch = match; // <-- renew your instance!
...
}
}
So, when I started to use the up-to-date currentMatch to end turns - the error went away.
I also found the same solution in this comment, but it took some time to realize that it was what I'd needed)
Hope this helps, cheers!