NSUserDefaults allows storing small amounts of user preference data, but should not be used for sensitive information. The Keychain can securely store passwords and other sensitive data. Files can be saved within an app's sandboxed directories like Documents, Library, and Caches. Entire object graphs can be encoded and archived using NSCoding, while Core Data provides a full object graph and database functionality with querying, versions, and more.