What I found is that info.plist file should never been localized! I tried to localize my project and tried to tap Localization on all plist and string files. As a result, I could not install my app to Simulator, invalid argument error.
I spent 1.5 days trying to find out reason. I tried all the solutions as listed above, but with no luck. Finally, discard all my localization changes and redo it again. This time, I tried to localize one file first, and then compiled codes and trie to run my app on Simulator.
The issue is info.plist file. You could localize it. The result is that en version is moved en.lproj folder. That is to say, no more info.plist file in the project folder. As a result, Xcode could not find it and exception raised.
Another way to verify it is to check your project settings. Select your target and general tab. The Identity should be like:

If your project settings are something like this, you have to locate info.plist, that means info.plist is missing.

You just cannot locate localized info.plist in en.lproj folder from project settings.

Don't localize info.plist file directly. You can localize it by localizing infoplist.strings file.
This may be one of reasons to get invalid argument exception, as in my case.
I also wrote a blog on this.