<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Nixwire &#124; Business Without Wires</title>
	<atom:link href="http://www.nixwire.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nixwire.com</link>
	<description>Enterprise mobile consulting and products</description>
	<pubDate>Wed, 10 Jun 2009 22:43:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Multi-select tables and the Three20 framework</title>
		<link>http://www.nixwire.com/tt-framework-multiselect/</link>
		<comments>http://www.nixwire.com/tt-framework-multiselect/#comments</comments>
		<pubDate>Tue, 12 May 2009 06:35:57 +0000</pubDate>
		<dc:creator>bfelder</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[320]]></category>

		<category><![CDATA[cocoa]]></category>

		<category><![CDATA[three20]]></category>

		<guid isPermaLink="false">http://www.nixwire.com/?p=150</guid>
		<description><![CDATA[Introduction
At Nixwire, I&#8217;m using the Three20 Project as a foundational framework for an application where I needed to create a multiple-selection UITableView, so that I could perform an operation on all table rows selected by the user. The UITableView control does not support multiple-row selection without custom programming. Matt Gallagher provides a helpful example on [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>
<p>At Nixwire, I&#8217;m using the <a href="http://joehewitt.com/post/the-three20-project/" onclick="javascript:pageTracker._trackPageview('/outbound/article/joehewitt.com');">Three20 Project</a> as a foundational framework for an application where I needed to create a multiple-selection UITableView, so that I could perform an operation on all table rows selected by the user. The UITableView control does not support multiple-row selection without custom programming. <a href="http://cocoawithlove.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/cocoawithlove.com');">Matt Gallagher</a> provides a <a href="http://cocoawithlove.com/2009/01/multiple-row-selection-and-editing-in.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/cocoawithlove.com');">helpful example</a> on how to create a multi-select table on his <a href="http://cocoawithlove.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/cocoawithlove.com');">Cocoa with Love</a> blog. Using Matt Gallagher&#8217;s example as a starting point, I made the multi-select control work in the context of the Three20 framework, and share my learnings here.</p>
<p>The Three20 Project was created by Joe Hewitt of Facebook. The components in Three20 were originally built as part of the Facebook iPhone application, then Joe Hewitt made the components generic and open-sourced the framework. Three20, currently characterized as &#8220;alpha quality&#8221; by the project owner, provides an excellent set of reusable UI and plumbing components for iPhone applications. Being in an alpha development state, documentation is scant and there can be a learning curve, but the value provided by the framework makes it worth the effort to learn. Components provided by the Three20 framework include:</p>
<ul>
<li>A photo viewer control that behaves similar to Apple&#8217;s Photos app</li>
<li>A message composer that behaves similar to Apple&#8217;s Mail app</li>
<li>TableViewControllers that are able to load their content from the internet</li>
<li>URL-based intra-app navigation, allowing URL binding to resources within your application</li>
<li>Persistent state on UI controls</li>
</ul>
<h2>Solution detail</h2>
<h3>Controller setup</h3>
<p>First, we need to set up the controller. Our controller, NXWMultiselectTableViewController, inherits from TTTableViewController, and is registered with the Three20 framework&#8217;s NavigationCenter by associating it with the URL &#8220;tt://nxwMultiselect&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="objc objc" style="font-family:monospace;">	TTNavigationCenter<span style="color: #002200;">*</span> nav <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>TTNavigationCenter defaultCenter<span style="color: #002200;">&#93;</span>;
	nav.mainViewController <span style="color: #002200;">=</span> self.navigationController;
	nav.delegate <span style="color: #002200;">=</span> self;
	nav.urlSchemes <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSArray</span> arrayWithObject<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;tt&quot;</span><span style="color: #002200;">&#93;</span>;
	...
	<span style="color: #002200;">&#91;</span>nav addView<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;nxwMultiselect&quot;</span> controller<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>NXWMultiselectTableViewController class<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>Once the controller is mapped to the URL, any Three20 control can be configured to navigate to the controller&#8217;s view with click actions. For example, to navigate to our multiselect table from another table&#8217;s cell, you would set up the URL property on the cell&#8217;s TableField to the desired URL:</p>

<div class="wp_syntax"><div class="code"><pre class="objc objc" style="font-family:monospace;"><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>TTTableField alloc<span style="color: #002200;">&#93;</span> initWithText<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Multiselect&quot;</span> url<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;tt://nxwMultiselect&quot;</span><span style="color: #002200;">&#93;</span> autorelease<span style="color: #002200;">&#93;</span></pre></div></div>

<p>Then, when clicking on the table cell, the Three20 framework loads the appropriate controller by calling the loadView method on the controller. Sweet!</p>
<h3>Sequence diagram for &#8220;checking&#8221; an item</h3>
<p>Once the controller is loaded, the user may &#8220;check off&#8221; cells by tapping them. The sequence diagram below shows how the various classes interact to &#8220;check off&#8221; a multi-select table row while in edit mode.</p>
<div class="wp-caption alignnone" style="width: 610px"><img title="Sequence diagram: Select table row to check" src="http://img.skitch.com/20090512-rx6suyxfsjkwqpdrjr9u1jj4xk.png" alt="Sequence diagram: Select table row to check" width="600" /><p class="wp-caption-text">Sequence diagram: Select table row to &quot;check&quot;</p></div>
<ol>
<li>User selects the row. The UITableView sends <em><strong>tableView:didSelectRowAtIndexPath:</strong></em> method call to the TableViewDelegate.</li>
<li>TableViewDelegate adds index path to SectionedDataSource&#8217;s <strong><em>selectedIndexPaths</em></strong> array.</li>
<li>TableViewDelegate sends <em><strong>tableView:prepareCell:forRowAtIndexPath:</strong></em> method call to the SectionedDataSource.</li>
<li>DataSource prepares the TTImageTableField&#8217;s defaultImage property to the checked PNG image.</li>
<li>DataSource sends a <em><strong>setNeedsLayout</strong></em> method call to the TableFieldCell, which prepares the cell for rendering.</li>
</ol>
<h2>Items to note</h2>
<ul>
<li><strong>Minimal drawing code.</strong> Aside from a few lines of code in the TableFieldCell&#8217;s <strong><em>layoutSubviews</em></strong> method, there is no code required to draw the cell; the TTImageTableField Three20 class takes care of the drawing.</li>
<li><strong>Customizable data source.</strong> The data source used in this example uses a hard-coded array of names; in order to display real data, you would need to set up the data source with the appropriate data through the TableViewController&#8217;s <strong><em>createDataSource</em></strong> method.</li>
<li><strong>URL-based navigation.</strong> After binding the controller to the desired URL in the TTNavigationCenter, the control can be accessed by URL within the application.</li>
<li><strong>Searchable table.</strong> The source includes the ability to filter the table results by typing one character at a time. While this capability is beyond what I&#8217;ll cover in this post, it&#8217;s worth studying my example to see how search is implemented. Pay attention to the TTSearchBar that is set up in the TableViewController&#8217;s <em><strong>loadView</strong></em> method, as well as the SectionedDataSource&#8217;s <em><strong>tableView:search:</strong></em> method and <em><strong>rebuildItems</strong></em> method.</li>
</ul>
<h2>Screenshots of the solution</h2>
<p>TTTableView in non-edit mode with no items selected:</p>
<div class="wp-caption alignnone" style="width: 327px"><img title="TTTableView in non-edit mode" src="http://img.skitch.com/20090511-jus6dbj7sds3awykiqjb437x47.png" alt="TTTableView in non-edit mode" width="317" height="477" /><p class="wp-caption-text">TTTableView in non-edit mode</p></div>
<p>TTTableView with some items selected:</p>
<div class="wp-caption alignnone" style="width: 326px"><img title="TTTableView with items selected" src="http://img.skitch.com/20090511-geht9twdqfhnik79sjp7xm34rc.png" alt="TTTableView with items selected" width="316" height="476" /><p class="wp-caption-text">TTTableView with items selected</p></div>
<p>Confirmation of items selected:</p>
<div class="wp-caption alignnone" style="width: 326px"><img title="Confirmation of items selected" src="http://img.skitch.com/20090511-8c29ju7snnadbrbn5q6gi6wbtq.png" alt="Confirmation of items selected" width="316" height="476" /><p class="wp-caption-text">Confirmation of items selected</p></div>
<h2>Source code</h2>
<p>Source code for this example is available <a href="http://www.nixwire.com/wp-content/uploads/2009/05/nixwire_three20_multiselect.zip" onclick="javascript:pageTracker._trackPageview('/downloads/wp-content/uploads/2009/05/nixwire_three20_multiselect.zip');">here</a>. The example requires the current version of the Three20 framework (as of 11 May 2009).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nixwire.com/tt-framework-multiselect/feed/</wfw:commentRss>
		</item>
		<item>
		<title>iPhone - Emerging Frameworks</title>
		<link>http://www.nixwire.com/iphone-emerging-frameworks/</link>
		<comments>http://www.nixwire.com/iphone-emerging-frameworks/#comments</comments>
		<pubDate>Mon, 11 May 2009 06:47:47 +0000</pubDate>
		<dc:creator>dshanley</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[IPod Touch]]></category>

		<category><![CDATA[mobile]]></category>

		<category><![CDATA[smartphone]]></category>

		<guid isPermaLink="false">http://www.nixwire.com/?p=146</guid>
		<description><![CDATA[This coming Saturday, May 16th, I&#8217;ll be discussing the new tools, code, and frameworks that are coming out of developing iPhone community.  I&#8217;ll be focusing on some of the tools that the team at Nixwire has started actively using such as:

Three20 Project
SQLitePersistent Objects
FMDB
touchcode

The talk will center around what this means for developers - how [...]]]></description>
			<content:encoded><![CDATA[<p>This coming Saturday, May 16th, I&#8217;ll be discussing the new tools, code, and frameworks that are coming out of developing iPhone community.  I&#8217;ll be focusing on some of the tools that the team at Nixwire has started actively using such as:</p>
<ul>
<li><a title="320" href="http://joehewitt.com/post/the-three20-project/" onclick="javascript:pageTracker._trackPageview('/outbound/article/joehewitt.com');" target="_self">Three20 Project</a></li>
<li><a title="SQLPO" href="http://code.google.com/p/sqlitepersistentobjects/" onclick="javascript:pageTracker._trackPageview('/outbound/article/code.google.com');" target="_self">SQLitePersistent Objects</a></li>
<li><a title="FMDB" href="http://gusmueller.com/blog/archives/2008/03/fmdb_for_iphone.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/gusmueller.com');" target="_self">FMDB</a></li>
<li><a title="touchcode" href="http://code.google.com/p/touchcode/" onclick="javascript:pageTracker._trackPageview('/outbound/article/code.google.com');" target="_self">touchcode</a></li>
</ul>
<p>The talk will center around what this means for developers - how it can speed development, what each framework offers, challenges in keeping up with such a evolving space, and how all of us can contribute and participate.</p>
<p>Afterward, we&#8217;ll have an active Q&amp;A session, and if it&#8217;s still going after a bit, maybe we&#8217;ll hit a <a title="Lucky Lab" href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=lucky+labrador+portland,+or&amp;sll=37.0625,-95.677068&amp;sspn=39.456673,72.246094&amp;ie=UTF8&amp;ll=45.514076,-122.650595&amp;spn=0.017081,0.035276&amp;z=15&amp;iwloc=A" onclick="javascript:pageTracker._trackPageview('/outbound/article/maps.google.com');" target="_blank">pub</a> nearby to continue the fun.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/94e39be9-9c89-4b45-b64e-3d6006317a60/" onclick="javascript:pageTracker._trackPageview('/outbound/article/reblog.zemanta.com');"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=94e39be9-9c89-4b45-b64e-3d6006317a60" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.nixwire.com/iphone-emerging-frameworks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Future of Enterprise Software</title>
		<link>http://www.nixwire.com/the-future-of-enterprise-software/</link>
		<comments>http://www.nixwire.com/the-future-of-enterprise-software/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 20:33:48 +0000</pubDate>
		<dc:creator>dshanley</dc:creator>
		
		<category><![CDATA[Enterprise Mobility]]></category>

		<category><![CDATA[enterprise]]></category>

		<category><![CDATA[enterprise strategy]]></category>

		<category><![CDATA[mobile]]></category>

		<category><![CDATA[predictions]]></category>

		<guid isPermaLink="false">http://www.nixwire.com/?p=125</guid>
		<description><![CDATA[We&#8217;ve arrived at another inflection point for enterprise software, and the future is bright (and mobile).
Looking back at the past, a period of significant growth followed game-changing developments adopted by the corporate community.  Against the backdrop of the worst economic downturn in modern history, this is the case beginning effectively now.
A buzzword soup of terms &#8212; SOA, [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve arrived at another inflection point for enterprise software, and the future is bright (and mobile).</p>
<p>Looking back at the past, a period of significant growth followed game-changing developments adopted by the corporate community.  Against the backdrop of the <a title="Economist - When Fortune Frowned" href="http://www.economist.com/specialreports/displayStory.cfm?STORY_ID=12373696" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.economist.com');" target="_blank">worst economic downturn in modern history</a>, this is the case beginning effectively now.</p>
<p>A buzzword soup of terms &#8212; SOA, SaaS, WS &#8212; is materializing into a tangible offering &#8212; cloud computing.  Startups get it.  Amazon, IBM, Oracle, Google get it.  Big business is getting it.</p>
<p><img class="aligncenter size-full wp-image-130" title="Enterprise Software Turning Points" src="http://www.nixwire.com/wp-content/uploads/2009/02/enterprise-software-timeline1.jpg" alt="Enterprise Software Turning Points" width="550" /></p>
<p style="text-align: left;">IBM announced further developments in their Blue Cloud initiative <a title="IBM And Juniper Networks Hoping To Gain Cloud Computing Market Share" href="http://www.techcrunchit.com/2009/02/09/ibm-and-juniper-networks-hoping-to-gain-cloud-computing-marketshare/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.techcrunchit.com');" target="_blank">here</a> and <a title="IBM Uses Amazon To Leapfrog Microsoft On The Way To The Blue Cloud" href="http://www.techcrunchit.com/2009/02/12/ibm-uses-amazon-to-leapfrog-microsoft-on-the-way-to-the-blue-cloud/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.techcrunchit.com');" target="_blank">here</a>.  Oracle&#8217;s <a title="Oracle Cloud Portal" href="http://www.oracle.com/technology/tech/cloud/index.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.oracle.com');" target="_blank">portal</a> demonstrates that they are aggressively pursuing cloud computing via both the storage and software models.</p>
<p style="text-align: left;">The drivers of moving to the cloud are:</p>
<p style="text-align: left;">
<ul>
<li>Increased outsourcing and specialization leading to an overall reduction in-house IT spending</li>
<li>Explosion of data-intensive applications and the increasing demand for metrics and business intelligence (BI)</li>
<li>Increased enterprise comfort-level with outside vendors and data services</li>
<li>Advancement and adoption of grid computing, web services / SOA, virtualization</li>
<li>Increasing demand for the mobile enterprise</li>
</ul>
<p>Corporate IT has already embraced outsourcing and virtualization, so it makes sense to take the next logical step towards specialization &#8212; cloud computing.  Free yourself of managing zero value-add IT infrastructure and focus on your core business by leveraging services like AWS/EC2 to achieve pure business goals.  Worrying about server requisitioning, provisioning, configuring software, and bandwidth is simply a complex and unnecessary distraction.</p>
<p>Moving to the cloud enables quick ramp-up and ramp-down utilization of what would typically take significant man-hours to do internally.  Quick provisioning of servers, web servers, applications, application servers; pay for what you use during the lifetime of a project; no capitalized infrastructure; shut it all down when the project runs it&#8217;s useful lifespan is what it is and will be all about.</p>
<p>Enterprise adoption tends to trend at about a 2-3 year lag from introduction, so we&#8217;re starting to see the first wave of real cloud computing adoption, and expect to see full adoption beginning in 2010 through 2011.</p>
<h3>What does this mean for mobility?</h3>
<p>With the adoption of both <a title="IBM Public-Private Clouds" href="http://www.internetnews.com/software/article.php/3801796" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.internetnews.com');" target="_blank">public and private clouds</a> by the enterprise, this will free up capital for enterprise mobility projects and also enable them by easing data access outside the four walls.  As IT infrastructure costs decrease by efficient use and specialization &#8212; cloudsourcing &#8212; of applications, this money can be plowed into mobility projects to really take advantage of distributed data access, further reducing the cost of doing business.</p>
<p>Mobilizing your field workers and freeing your desk workers delivers increased business transaction economy from sales, manufacturing, and delivery to billing, maintenance, and reporting.  Total integration to the enterprise via mobile devices and applications &#8212; far beyond the current contacts, email, phone applications of today will further drive enterprise cloud adoption (which will in turn fuel more mobile adoption).</p>
<p>The exciting enterprise inflection point we&#8217;re living through today signals a fundamental change to the way business will be conducted.  The rise of cloud computing and mobility will match the internal and external expectations of your staff and customers.</p>
<p>I&#8217;ll be laying out the best practices here to identify your key applications to mobilize and strategies to ensure successful rollout and adoption.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nixwire.com/the-future-of-enterprise-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Speed Workflow with iPhone Simulator Cropper</title>
		<link>http://www.nixwire.com/speed-iphone-workflow-with-iphone-simulator-cropper/</link>
		<comments>http://www.nixwire.com/speed-iphone-workflow-with-iphone-simulator-cropper/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 23:35:16 +0000</pubDate>
		<dc:creator>dshanley</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.nixwire.com/?p=120</guid>
		<description><![CDATA[Oliver at http://www.curioustimes.de has created a nice tool that speeds marketing material creation for the iPhone by cropping images right out of the simulator instead of using the Xtools Organizer.
The benefit here is that the images can be saved directly as JPGs and the status bar (top 20px) can be automatically removed.  Great little [...]]]></description>
			<content:encoded><![CDATA[<p>Oliver at <a href="http://www.curioustimes.de" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.curioustimes.de');">http://www.curioustimes.de</a> has created a nice tool that speeds marketing material creation for the iPhone by cropping images right out of the simulator instead of using the Xtools Organizer.<br />
The benefit here is that the images can be saved directly as JPGs and the status bar (top 20px) can be automatically removed.  Great little tool!<br />
You can find the <a href="http://www.curioustimes.de/iphonesimulatorcropper/index.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.curioustimes.de');">iPhone Simulator Cropper here.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nixwire.com/speed-iphone-workflow-with-iphone-simulator-cropper/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Consider an Analytics Package for Your iPhone App</title>
		<link>http://www.nixwire.com/consider-an-analytics-package-for-your-iphone-app/</link>
		<comments>http://www.nixwire.com/consider-an-analytics-package-for-your-iphone-app/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 20:33:02 +0000</pubDate>
		<dc:creator>dshanley</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[metrics]]></category>

		<category><![CDATA[mobclix]]></category>

		<guid isPermaLink="false">http://www.nixwire.com/?p=102</guid>
		<description><![CDATA[Launching an app in the App Store is a great achievement, but you&#8217;ll be flying blind with just the sales metrics provided by iTunes Connect.


Inevitably, there will be issues you&#8217;ll want to track, real-time user metrics, and a broader understanding of the device population that you&#8217;re deployed to.


There are a couple of startups tackling this [...]]]></description>
			<content:encoded><![CDATA[<p>Launching an app in the App Store is a great achievement, but you&#8217;ll be flying blind with just the sales metrics provided by <a href="http://itunesconnect.apple.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/itunesconnect.apple.com');">iTunes Connect</a>.
</p>
<p>
Inevitably, there will be issues you&#8217;ll want to track, real-time user metrics, and a broader understanding of the device population that you&#8217;re deployed to.
</p>
<p>
There are a couple of startups tackling this problem, and I definitely suggest you check out their lightweight SDKs and integrate one with your application.  There&#8217;s a great similarity across what they are all offering &#8212; a few logging methods and a web-based dashboard reporting the results.  Most even take advantage of CoreLocation to report back the geographic distribution of your user base.
</p>
<p>
We&#8217;ve been using <a href="http://mobclix.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/mobclix.com');">mobclix</a> to accomplish this, and in general, it&#8217;s a good offering.  All of this is new, so I wouldn&#8217;t get too carried away with your expectations, but this begins to fill the void that Apple has so far not addressed.
</p>
<p>One of our home dashboards in <a href="http://mobclix.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/mobclix.com');">mobclix</a>:</p>
<p><img src="http://www.nixwire.com/wp-content/uploads/2009/01/picture-1-300x239.png" alt="Mobclix Dashboard" title="Mobclix Dashboard" width="300" height="239" class="aligncenter size-medium wp-image-104" /></p>
<p>gives us an instant breakdown of how many users on what devices and what their primary means of connection (wifi, carrier, none) is.  We&#8217;ve chosen not to track their location, though, as this application doesn&#8217;t use CoreLocation</p>
<p>So, when planning your rollout, considering the easy integration of one of these offerings:</p>
<ul>
<li><a href="http://mobclix.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/mobclix.com');">mobclix</a></li>
<li><a href="http://flurry.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/flurry.com');">flurry</a></li>
<li><a href="http://www.pinchmedia.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.pinchmedia.com');">pinch media</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nixwire.com/consider-an-analytics-package-for-your-iphone-app/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Add Images to the iPhone Simulator</title>
		<link>http://www.nixwire.com/adding-images-to-iphone-simulator-library/</link>
		<comments>http://www.nixwire.com/adding-images-to-iphone-simulator-library/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 20:58:15 +0000</pubDate>
		<dc:creator>dshanley</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.nixwire.com/?p=93</guid>
		<description><![CDATA[Adding images to the iPhone Simulator Library is important if you want to do extensive testing with the UIImagePickerController and your source type is UIImagePickerControllerSourceTypePhotoLibrary, or you just want your images to be displayed.

The camera is not available on iPod touches, so this is even more applicable if that&#8217;s one of your targeted devices.

There&#8217;s a [...]]]></description>
			<content:encoded><![CDATA[<p>Adding images to the iPhone Simulator Library is important if you want to do extensive testing with the <code>UIImagePickerController</code> and your source type is <code>UIImagePickerControllerSourceTypePhotoLibrary</code>, or you just want your images to be displayed.
</p>
<p>The camera is not available on iPod touches, so this is even more applicable if that&#8217;s one of your targeted devices.
</p>
<p>There&#8217;s a good post about this on <a href="http://ofcodeandmen.poltras.com/2008/11/04/adding-pictures-to-the-simulator/" onclick="javascript:pageTracker._trackPageview('/outbound/article/ofcodeandmen.poltras.com');">ofCodeAndMen()</a></p>
<p>The trick is to drag your image onto the simulator which will launch Safari.  Then, just tap and hold the image to save to your Simulator&#8217;s library.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nixwire.com/adding-images-to-iphone-simulator-library/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getting UIImage to work with NSCoding encodeWithCoder</title>
		<link>http://www.nixwire.com/getting-uiimage-to-work-with-nscoding-encodewithcoder/</link>
		<comments>http://www.nixwire.com/getting-uiimage-to-work-with-nscoding-encodewithcoder/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 20:51:31 +0000</pubDate>
		<dc:creator>dshanley</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[UIImage]]></category>

		<guid isPermaLink="false">http://www.nixwire.com/?p=59</guid>
		<description><![CDATA[Out of the box, UIImage doesn&#8217;t support the NSCoding protocol which means it won&#8217;t automatically serialize if you stuff these in a dictionary or object and archive (using NSKeyedArchiver for example).  The easy solution is to convert this into an NSData object which does support the protocol:

//convert from PNG to NSData, other method available [...]]]></description>
			<content:encoded><![CDATA[<p>Out of the box, UIImage doesn&#8217;t support the NSCoding protocol which means it won&#8217;t automatically serialize if you stuff these in a dictionary or object and archive (using NSKeyedArchiver for example).  The easy solution is to convert this into an NSData object which does support the protocol:</p>

<div class="wp_syntax"><div class="code"><pre class="objc objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">//convert from PNG to NSData, other method available for JPG</span>
<span style="color: #400080;">NSData</span> <span style="color: #002200;">*</span>imageData <span style="color: #002200;">=</span> UIImagePNGRepresentation<span style="color: #002200;">&#40;</span>imageToArchive<span style="color: #002200;">&#41;</span>;
<span style="color: #002200;">&#91;</span>self.currentItem setValue<span style="color: #002200;">:</span>imageData forKey<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;image&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">//after the archived object is unarchived, you can retrieve the image like this</span>
<span style="color: #400080;">NSData</span> <span style="color: #002200;">*</span>imageData <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>currentItem valueForKey<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;image&quot;</span><span style="color: #002200;">&#93;</span>;
<span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span>imageData<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#123;</span>
       UIImage <span style="color: #002200;">*</span>image <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIImage imageWithData<span style="color: #002200;">:</span>imageData<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>Without doing this, and trying to archive a UIImage will just result in:</p>
<blockquote><p><code class="error"><br />
-[UIImage encodeWithCoder:]: unrecognized selector sent to instance</code></p></blockquote>
<p>Pretty simple.  The key is the helper method <code>UIImagePNGRepresentation</code> found in the UIKit Function Reference.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nixwire.com/getting-uiimage-to-work-with-nscoding-encodewithcoder/feed/</wfw:commentRss>
		</item>
		<item>
		<title>More Than Just Guidelines</title>
		<link>http://www.nixwire.com/more-than-just-guidelines/</link>
		<comments>http://www.nixwire.com/more-than-just-guidelines/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 23:29:24 +0000</pubDate>
		<dc:creator>dshanley</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[mobile]]></category>

		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.nixwire.com/?p=45</guid>
		<description><![CDATA[The iPhone Human Interface Guidelines are more than just that &#8212; it is essential for you to understand them in order to ensure that your app will be approved for sale in the App Store.
From Apple:
&#8220;Applications must adhere to the iPhone Human Interface Guidelines as outlined in iPhone SDK Agreement section 3.3.5.&#8221;
Consider this important guideline [...]]]></description>
			<content:encoded><![CDATA[<p>The iPhone Human Interface Guidelines are more than just that &#8212; it is essential for you to understand them in order to ensure that your app will be approved for sale in the App Store.</p>
<p>From Apple:<br />
<span class="highlight">&#8220;Applications must adhere to the iPhone Human Interface Guidelines as outlined in iPhone SDK Agreement section 3.3.5.&#8221;</span></p>
<p>Consider this important guideline in the Table Views, Text Views, and Web Views section of the iHIG:</p>
<blockquote><p>
&#8220;Table views provide feedback when users select list items. Specifically, when an item can be selected, the row containing the item highlights briefly when a user selects it to show that the selection has been received.  Then, an immediate action occurs: Either a new view is revealed or the row displays a checkmark to indicate that the item has been selected. The row never remains highlighted, because table views do not display persistent selected state.&#8221;
</p></blockquote>
<p><br/><br />
The easy part to miss when implementing your own View Controller is <strong>&#8220;The row never remains highlighted&#8221;</strong>.  </p>
<p>In your own custom <code>UIViewController</code> subclasses, you&#8217;ll want to address this within the</p>
<p><code>- (void)viewWillAppear:(BOOL)animated</code> UIViewController delegate method.</p>
<p>Given a <code>UITableView</code> member property, <code>theTableView</code>, you can make sure the selected row gets deselected after popping the previous View Controller:</p>

<div class="wp_syntax"><div class="code"><pre class="objc objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>viewWillAppear<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>animated <span style="color: #002200;">&#123;</span>
<span style="color: #002200;">&#91;</span>super viewWillAppear<span style="color: #002200;">:</span>animated<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">//deselect any selected rows</span>
<span style="color: #400080;">NSIndexPath</span> <span style="color: #002200;">*</span>selectedRowPath <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>theTableView indexPathForSelectedRow<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#91;</span>theTableView deselectRowAtIndexPath<span style="color: #002200;">:</span>selectedRowPath animated<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span>;
...
<span style="color: #002200;">&#125;</span></pre></div></div>

<p><br/><br />
Treat the guidelines as the law of the land, and you and your users will attain App Store nirvana.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nixwire.com/more-than-just-guidelines/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Solid, Comprehensive iPhone State-of-the-Market Overview</title>
		<link>http://www.nixwire.com/solid-comprehensive-iphone-state-of-the-market-overview/</link>
		<comments>http://www.nixwire.com/solid-comprehensive-iphone-state-of-the-market-overview/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 16:29:57 +0000</pubDate>
		<dc:creator>dshanley</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[mobile]]></category>

		<category><![CDATA[smartphone]]></category>

		<category><![CDATA[whitepaper]]></category>

		<guid isPermaLink="false">http://www.nixwire.com/?p=41</guid>
		<description><![CDATA[From the Amazing iPhone site, the team over there has put together a very thorough review of the iPhone market including history, opportunity, and developer requirements current through the end of 2008.  Worth a read, especially for developers interested in understanding the emerging smartphone marketplace.
The Amazing iPhone Report
]]></description>
			<content:encoded><![CDATA[<p>From the <a href="http://theamazingiphone.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/theamazingiphone.com');">Amazing iPhone</a> site, the team over there has put together a very thorough review of the iPhone market including history, opportunity, and developer requirements current through the end of 2008.  Worth a read, especially for developers interested in understanding the emerging smartphone marketplace.</p>
<p><a href="http://theamazingiphone.com/wp-content/uploads/2008/12/amazingiphonereport_051208.pdf" onclick="javascript:pageTracker._trackPageview('/outbound/article/theamazingiphone.com');">The Amazing iPhone Report</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nixwire.com/solid-comprehensive-iphone-state-of-the-market-overview/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
