Right now I have a username being stored in NSUserDefaults and the password in a keychain. While I know everything is stored in plain text in NSUserDefaults, could an end-user also change this stored value? The username is used throughout the application to retrieve data from a server. My fear is that if an end-user can change this value, they would be able to become other users. 

So is NSUserDefaults readable and writable or just readable by the end-user?