This is what it says in the CLGeocoder Class Reference.
An iOS-based device must have access to the network in order for the
geocoder object to return detailed placemark information. Although,
the geocoder stores enough information locally to report the localized
country name and ISO country code for many locations. If country
information is not available for a specific location, the geocoder may
still report an error to your completion block.
I also only need country location, but I have no idea what for "many locations" means. It seems like it does not work in Oslo, Norway.