Firstly go to Settings/iCloud on the iphone and just check that the individual apps are switched on to sync.
If they are, then on the Mac, go to System Preferences/Mail, Contacts and Calendars and click on iCloud in the left column. Deleselect the service not working, then reselect it.
If that doesn't work, just reset iCloud on the Mac. Go to System Preferences/iCloud and log out and back in again. When you log out you will be asked if you want to keep a copy on your Mac. If you do, when you log back in again, you will have a listing of things on iCloud and another under it in On My Mac. I don't like the double listing, so always select remove from Mac. Everything on iCloud will be redownloaded onto the Mac again when you log back into iCloud.
Failing that, then the issue is most likely on the iphone. Try a restart of the phone, then if that doesn't work log out of iCloud on it and back in again. Never had to do that though to get things syncing.