Explain NSError in Swift.
Information about an error condition is summarized within an NSError object flexibly and object-oriented manner. An NSError consists of three basic attributes: a predefined error domain, a domain-specific error code, and a user info dictionary comprising application-specific information.
