Before executing this:
IERC721(nftContract).transferFrom(address(this), msg.sender, item.tokenId);
You need to execute this:
IERC721(nftContract).approve(address(this), item.tokenId);
Note that I've actually explained this to you in an answer to one of your previous questions.