Issue #553
Read Swift asserts - the missing manual
debug release release
function -Onone -O -Ounchecked
assert() YES NO NO
assertionFailure() YES NO NO**
precondition() YES YES NO
preconditionFailure() YES YES YES**
fatalError()* YES YES YES
And from Interesting discussions on Swift Evolution
– assert: checking your own code for internal errors
– precondition: for checking that your clients have given you valid arguments.