<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.9.1" -->
<rss version="0.92">
<channel>
	<title>Backspace Prologue</title>
	<link>http://troybrant.net/blog</link>
	<description>Mistakes and learnings of an iPhone developer</description>
	<lastBuildDate>Mon, 08 Feb 2010 22:18:12 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>Adding firstObject to NSArray</title>
		<description><![CDATA[NSArray has a lastObject method. So, of course there is a matching firstObject method, right?
Nope.
If that oversight annoys you to no end, drop this simple category in your code, and say goodbye to all those ugly [array objectAtIndex:0]&#8217;s.

// NSArray+FirstObject.h
#import &#60;Foundation/Foundation.h&#62; 
@interface NSArray (FirstObject) 
&#45; (id)firstObject;
@end 


// NSArray+FirstObject.m
#import &#34;NSArray+FirstObject.h&#34; 
@implementation NSArray (FirstObject) 
&#45; (id)firstObject
{
&#160;&#160;&#160;&#160;if ([self count] [...]]]></description>
		<link>http://troybrant.net/blog/2010/02/adding-firstobject-to-nsarray/</link>
			</item>
	<item>
		<title>Detecting Bad CoreLocation Data</title>
		<description><![CDATA[CoreLocation can (and will) give you poor location data. Over the course of developing RunMonster, I have become painfully aware of this fact. It turns out, though, that you can detect and discard the most egregiously bad location data using a few simple tests.
When a new point comes in, it is invalid and can be [...]]]></description>
		<link>http://troybrant.net/blog/2010/02/detecting-bad-corelocation-data/</link>
			</item>
	<item>
		<title>MKMapView and Zoom Levels: A Visual Guide</title>
		<description><![CDATA[So, how exactly does the code provided in the previous post work? What follows is a visual explanation of Google Maps, zoom levels, and how you go about adding support for zoom levels to the MKMapView class.
Round to Flat
This is planet Earth:

As you may know, it is round.
To create a map of the Earth, the [...]]]></description>
		<link>http://troybrant.net/blog/2010/01/mkmapview-and-zoom-levels-a-visual-guide/</link>
			</item>
	<item>
		<title>Set the Zoom Level of an MKMapView</title>
		<description><![CDATA[If you have ever built a web application using the Google Maps API, you are likely intimately familiar with this line of code:

map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13);

The setCenter JavaScript method takes in the center coordinate and a zoom level. The zoom level, as you might expect, determines how far the map should zoom in. The zoom [...]]]></description>
		<link>http://troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview/</link>
			</item>
	<item>
		<title>Invalid Product IDs</title>
		<description><![CDATA[Do you have an invalid product ID that won&#8217;t go away? Good thing the StoreKit API provides error codes and detailed error information explaining why the ID is invalid.
Oh, what&#8217;s that? There are no error codes or error details of any kind when you have an invalid product ID, you say? Bah, silly me.
To save [...]]]></description>
		<link>http://troybrant.net/blog/2010/01/invalid-product-ids/</link>
			</item>
	<item>
		<title>In App Purchases: A Full Walkthrough</title>
		<description><![CDATA[At first glance, adding in-app purchases seems like it would be a walk in the park. Apple provides plenty of documentation that should get developers up and running in no time.
So, why is adding in-app purchases such a royal pain in the arse?
Because, inevitably, something will go wrong. And when that moment arrives, you&#8217;re screwed. [...]]]></description>
		<link>http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/</link>
			</item>
</channel>
</rss>
