if (win) { // Game was won, set completed in puzzle and time // Calculate seconds taken int timeTaken = (int)([NSDate timeIntervalSinceReferenceDate]
That managed object doesn't have an attribute named “bestTime”. According to the exception message, it definitely is a Puzzle, so you haven't declared an attribute named bestTime in your model (or you misspelled it or capitalized it differently).
bestTime