Check the Location Awareness Programming Guide, you can find all you need to do Forward/Reverse geocoding usig the CoreLocation framework.
For the precision inside a building, you've not much to do; inside buildings you could get a bad triangulation, it really depends on what kind of building you are. If you're near a window probably you can get good coordinates, but if you're for example in the center of an airport it's difficult.