title: Principles behind when to use an optional type in Swift?
body: <p>When designing classes/structs in Swift, what are the best practices for identifying when you should use an Optional type?</p>
  
  <p>For example, lets say I'm mapping a JSON response to a <code>Photo</code> object and there is a property <code>photographerName</code> which is just a string. Sometimes we receive empty strings for the field <code>photographerName</code> by the response.</p>
  
  <p>Should my <code>Photo</code> object use a <code>String?</code> type and assign it to nil? Or use a <code>String</code> type and set it to an empty string?</p>