To prevent spam calls on an iPhone, you can silence unknown numbers. This means that withheld numbers and numbers which aren't in your contacts (apart from numbers that you've tried to call recently) will all go straight to voicemail. These blocked calls will still be shown on your recent calls list. To silence unknown numbers on an iPhone:
Go to your Settings app
Tap on Phone
Go to Silence Unknown Callers
Toggle Silence Unknown Callers to be on
Reporting spam calls
You can report spam numbers here