<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkAASH07fCp7ImA9WhBbF08.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100</id><updated>2013-05-16T11:25:49.304-07:00</updated><category term="ghunit" /><category term="uisearchbar" /><category term="extraction" /><category term="Twitter Framework" /><category term="xcode" /><category term="UIKit" /><category term="twitter integration" /><category term="uitableview" /><category term="storyboard" /><category term="cocoapods" /><category term="ipaexplorer" /><category term="jenkins" /><category term="tutorial" /><category term="iOS 5" /><category term="dropshadow" /><category term="iOS" /><category term="Instagram" /><category term="testing" /><category term="UITableViewCell" /><category term="iOS5" /><category term="HTML5" /><category term="customization" /><title>Kurry Tran's Blog</title><subtitle type="html">Tumblr: kurrytran.tumblr.com</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://kurrytran.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/SoFHn" /><feedburner:info uri="blogspot/sofhn" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUUERHYycCp7ImA9WhBUGEs.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-3400630216302112260</id><published>2013-05-06T12:06:00.000-07:00</published><updated>2013-05-06T12:06:45.898-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-06T12:06:45.898-07:00</app:edited><title>How to Get Root Certification Authorities List from Android Phone Connected by USB in Mac OS X</title><content type="html">&lt;div style="word-wrap:break-word;"&gt;
1. Make sure you have adb installed, and if not install it via homebrew.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;$ which adb
/usr/local/bin/adb
&lt;/pre&gt;
or
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;$ brew install adb
&lt;/pre&gt;
Note: You can also determine the Android SDK version of the device by typing:
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;$ adb shell grep ro.build.version.sdk= system/build.prop
ro.build.version.sdk=17
&lt;/pre&gt;
2. Log into the android phone terminal by typing this command in the mac terminal.&lt;br /&gt;
&lt;pre class="prettyprint"&gt;$ adb -d shell
shell@android:/ $
&lt;/pre&gt;
&lt;br /&gt;
3. Navigate to the&amp;nbsp;&lt;span style="background-color: white; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; line-height: 14.296875px; white-space: pre;"&gt;/system/etc/security/cacerts&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;directory or whatever directory that contains the certificate authority&amp;nbsp;certificates&amp;nbsp;and then you can list the root certification authorities on that phone.&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; line-height: 14.296875px; white-space: pre;"&gt; &lt;/span&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;$ cd system/etc/security/cacerts/ 
$ ls 
shell@android:/system/etc/security/cacerts $ ls
00673b5b.0
03e16f6c.0
08aef7bb.0
0d188d89.0
10531352.0
111e6273.0
1155c94b.0
119afc2e.0
11a09b38.0
12d55845.0
17b51fe6.0
1920cacb.0
...
&lt;/pre&gt;
&lt;div&gt;
4. Once you've located all of the certificate authorities certificates you can pull then to your local computer by typing this command:
&lt;/div&gt;
&lt;div&gt;Note: I created a folder called android-certs on my local computer and the "." command says to copy all of the files to the current directory.&amp;nbsp;&lt;/div&gt;
&lt;pre class="prettyprint"&gt;
Kurrys-MacBook-Pro:android-certs ktran$ adb pull /system/etc/security/cacerts/ .
pull: building file list...
pull: /system/etc/security/cacerts/ff783690.0 -&gt; ./ff783690.0
pull: /system/etc/security/cacerts/fde84897.0 -&gt; ./fde84897.0
pull: /system/etc/security/cacerts/fb126c6d.0 -&gt; ./fb126c6d.0
pull: /system/etc/security/cacerts/facacbc6.0 -&gt; ./facacbc6.0
pull: /system/etc/security/cacerts/fac084d7.0 -&gt; ./fac084d7.0
pull: /system/etc/security/cacerts/f80cc7f6.0 -&gt; ./f80cc7f6.0
pull: /system/etc/security/cacerts/f61bff45.0 -&gt; ./f61bff45.0
pull: /system/etc/security/cacerts/f58a60fe.0 -&gt; ./f58a60fe.0
pull: /system/etc/security/cacerts/f4996e82.0 -&gt; ./f4996e82.0
pull: /system/etc/security/cacerts/ee7cd6fb.0 -&gt; ./ee7cd6fb.0
pull: /system/etc/security/cacerts/ed524cf5.0 -&gt; ./ed524cf5.0
pull: /system/etc/security/cacerts/ed049835.0 -&gt; ./ed049835.0
...
140 files pulled. 0 files skipped.
2206 KB/s (693383 bytes in 0.306s)
&lt;/pre&gt;

5. Once you have all of the certificates in the folder you can use the command line tool grep to find all issuers. Run this command:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;
$ grep "Issuer" *
&lt;/pre&gt;
You should see something like this:
&lt;br/&gt;
&lt;pre class="prettyprint"&gt;
00673b5b.0:        Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA
03e16f6c.0:        Issuer: OU=Copyright (c) 1997 Microsoft Corp., OU=Microsoft Corporation, CN=Microsoft Root Authority
08aef7bb.0:        Issuer: C=US, O=Wells Fargo WellsSecure, OU=Wells Fargo Bank NA, CN=WellsSecure Public Root Certificate Authority
0d188d89.0:        Issuer: C=TR, O=Elektronik Bilgi Guvenligi A.S., CN=e-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
10531352.0:        Issuer: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Services Root Certificate Authority - G2
111e6273.0:        Issuer: OU=GlobalSign Root CA - R2, O=GlobalSign, CN=GlobalSign
1155c94b.0:        Issuer: C=ES, L=C/ Muntaner 244 Barcelona, CN=Autoridad de Certificacion Firmaprofesional CIF 
...
&lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/gKNY_1NhfkE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/3400630216302112260/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=3400630216302112260" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/3400630216302112260?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/3400630216302112260?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/gKNY_1NhfkE/how-to-get-root-certification.html" title="How to Get Root Certification Authorities List from Android Phone Connected by USB in Mac OS X" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2013/05/how-to-get-root-certification.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UDRns_cSp7ImA9WhBUEkU.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-2835008943690171033</id><published>2013-04-29T15:12:00.000-07:00</published><updated>2013-04-29T17:21:17.549-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-29T17:21:17.549-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ghunit" /><category scheme="http://www.blogger.com/atom/ns#" term="jenkins" /><category scheme="http://www.blogger.com/atom/ns#" term="cocoapods" /><category scheme="http://www.blogger.com/atom/ns#" term="xcode" /><category scheme="http://www.blogger.com/atom/ns#" term="testing" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title>Automated Unit Testing with Jenkins, Cocoapods and GHUnit</title><content type="html">&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
1. Install homebrew&amp;nbsp;&lt;a href="http://mxcl.github.io/homebrew/" target="_blank"&gt;link&lt;/a&gt;.&lt;/div&gt;
Or paste the command in terminal:&lt;br /&gt;
&lt;pre class="prettyprint"&gt;$ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
2. Install cocoapods&amp;nbsp;&lt;a href="http://cocoapods.org/" target="_blank"&gt;http://cocoapods.org/&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;$ sudo gem install cocoapods
$ pod setup
&lt;/pre&gt;
&lt;br /&gt;
3. Add GHUnit to your podfile.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;pod 'GHUnitIOS', '~&amp;gt; 0.5.6'
&lt;/pre&gt;
&lt;br /&gt;
Common Error: When I first uploaded my repo to Jenkins, I got an error about Jenkins not being able to clone a submodule for Cocoapods, and if you're having this issue you have to make sure to delete anything related to Cocoapods in your .gitmodules file.&lt;br /&gt;
&lt;br /&gt;
Common Error: We added KIF to our project as a cocoapods dependency, but your app will be rejected if you include it in the build you submit to the app store. The solution is to only include KIF for your test target that uses KIF and not your App Store release version of your app. This can be done in your cocoapods file.&lt;br /&gt;
&lt;br /&gt;
Example:
&lt;br /&gt;
For command line builds XCode defaults to release version (which you can change), and my KIF tests were in the target IntegrationTests.
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;target :release, :exclusive =&amp;gt; true do
  link_with 'IntegrationTests'
 pod 'KIF', '~&amp;gt; 0.0.1'
end
&lt;/pre&gt;
&lt;br /&gt;
KIF.podspec
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;Pod::Spec.new do |s|
  s.name         = "KIF"
  s.version      = "0.0.1"
  s.summary      = "KIF, which stands for Keep It Functional, 
is an iOS integration test framework."
  s.homepage     = "https://github.com/square/KIF"
  s.license  = 'MIT'
  s.author       = 'efirestone', 'jpsim'
  s.source       = { :git =&amp;gt; "https://github.com/square/KIF.git",
 :commit =&amp;gt; "ed057a038f07232e351210e56971fd9440acdd42" }
  s.platform     = :ios, '5.0'
  s.source_files = 'Classes','Additions',
  s.frameworks = 'UIKit', 'Foundation'
end
&lt;/pre&gt;
&lt;br /&gt;
4. Install Jenkins with homebrew:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;$ brew install jenkins
&lt;/pre&gt;
&lt;br /&gt;
5. Add an alias to your .bashrc file and add an alias to start and stop Jenkins.&lt;br /&gt;
&lt;br /&gt;
.bashrc
&lt;br /&gt;
&lt;pre class="prettyprint" style="word-wrap: break-word;"&gt;alias jenkins_start="launchctl load /usr/local/Cellar/jenkins/1.499/homebrew.mxcl.jenkins.plist"
alias jenkins_stop="launchctl unload /usr/local/Cellar/jenkins/1.499/homebrew.mxcl.jenkins.plist"&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="font-family: Times; white-space: normal;"&gt;
6. Start Jenkins server by typing the command in terminal:&lt;/div&gt;
&lt;div style="font-family: Times; white-space: normal;"&gt;
&lt;/div&gt;
&lt;div style="font-family: Times; white-space: normal;"&gt;
&lt;pre class="prettyprint"&gt;$ jenkins_start
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="font-family: Times; white-space: normal;"&gt;
&lt;/div&gt;
&lt;div style="font-family: Times; white-space: normal;"&gt;
7. Use this Makefile:&lt;/div&gt;
&lt;pre class="prettyprint" style="word-wrap: break-word;"&gt;default:
 # Set default make action here
 # xcodebuild -target Tests -configuration MyMainTarget -sdk macosx build 

clean:
 -rm -rf build/*

test:
 GHUNIT_CLI=1 WRITE_JUNIT_XML=1 /usr/bin/xcodebuild -target TARGET_NAME -configuration Debug -sdk iphonesimulator build -project PROJECT_FOLDER/PROJECT_NAME.xcodeproj 
&lt;/pre&gt;
&lt;br /&gt;
8. In Jenkins, create a job and execute a shell script with the following command:
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;make test
&lt;/pre&gt;
&lt;br /&gt;
9. Create an output job to publish the JUnit XML output. By default, the XML results are located in the PROJECT_NAME/build/test-results folder. 
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-2SDBNj3j9ww/UX8DV7acu3I/AAAAAAAABWI/1jhtXk3aJ_M/s1600/Screen+Shot+2013-04-29+at+7.32.41+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="434" src="http://2.bp.blogspot.com/-2SDBNj3j9ww/UX8DV7acu3I/AAAAAAAABWI/1jhtXk3aJ_M/s640/Screen+Shot+2013-04-29+at+7.32.41+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Save and apply settings.
&lt;br /&gt;
&lt;div style="font-family: Times; white-space: normal;"&gt;
&lt;/div&gt;
&lt;br /&gt;
11. In XCode, add a Run Script build phase and add these scripts in the folder that contains your Xcode project.
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;sh RunTests.sh
&lt;/pre&gt;
&lt;br /&gt;
RunTests.sh
&lt;br /&gt;
&lt;pre class="prettyprint" style="word-wrap: break-word;"&gt;#!/bin/sh

# If we aren't running from the command line, then exit
if [ "$GHUNIT_CLI" = "" ] &amp;amp;&amp;amp; [ "$GHUNIT_AUTORUN" = "" ]; then
  exit 0
fi

export DYLD_ROOT_PATH="$SDKROOT"
export DYLD_FRAMEWORK_PATH="$CONFIGURATION_BUILD_DIR"
export IPHONE_SIMULATOR_ROOT="$SDKROOT"
#export CFFIXED_USER_HOME="$TEMP_FILES_DIR/iPhone Simulator User Dir" # Be compatible with google-toolbox-for-mac

#if [ -d $"CFFIXED_USER_HOME" ]; then
#  rm -rf "$CFFIXED_USER_HOME"
#fi
#mkdir -p "$CFFIXED_USER_HOME"

export NSDebugEnabled=YES
export NSZombieEnabled=YES
export NSDeallocateZombies=NO
export NSHangOnUncaughtException=YES
export NSAutoreleaseFreedObjectCheckEnabled=YES

export DYLD_FRAMEWORK_PATH="$CONFIGURATION_BUILD_DIR"

TEST_TARGET_EXECUTABLE_PATH="$TARGET_BUILD_DIR/$EXECUTABLE_PATH"

if [ ! -e "$TEST_TARGET_EXECUTABLE_PATH" ]; then
  echo ""
  echo "  ------------------------------------------------------------------------"
  echo "  Missing executable path: "
  echo "     $TEST_TARGET_EXECUTABLE_PATH."
  echo "  The product may have failed to build or could have an old xcodebuild in your path (from 3.x instead of 4.x)."
  echo "  ------------------------------------------------------------------------"
  echo ""
  exit 1
fi

# If trapping fails, make sure we kill any running securityd
#launchctl list | grep GHUNIT_RunIPhoneSecurityd &amp;amp;&amp;amp; launchctl remove GHUNIT_RunIPhoneSecurityd
#SCRIPTS_PATH=`cd $(dirname $0); pwd`
#launchctl submit -l GHUNIT_RunIPhoneSecurityd -- "$SCRIPTS_PATH"/RunIPhoneSecurityd.sh $IPHONE_SIMULATOR_ROOT #$CFFIXED_USER_HOME
#trap "launchctl remove GHUNIT_RunIPhoneSecurityd" EXIT TERM INT

RUN_CMD="\"$TEST_TARGET_EXECUTABLE_PATH\" -RegisterForSystemEvents"

echo "Running: $RUN_CMD"
set +o errexit # Disable exiting on error so script continues if tests fail
eval $RUN_CMD
RETVAL=$?
set -o errexit

unset DYLD_ROOT_PATH
unset DYLD_FRAMEWORK_PATH
unset IPHONE_SIMULATOR_ROOT

if [ -n "$WRITE_JUNIT_XML" ]; then
  MY_TMPDIR=`/usr/bin/getconf DARWIN_USER_TEMP_DIR`
  RESULTS_DIR="${MY_TMPDIR}test-results"

  if [ -d "$RESULTS_DIR" ]; then
 `$CP -r "$RESULTS_DIR" "$BUILD_DIR" &amp;amp;&amp;amp; rm -r "$RESULTS_DIR"`
  fi
fi

exit $RETVAL
&lt;/pre&gt;
&lt;div style="font-family: Times; white-space: normal;"&gt;
&lt;/div&gt;
&lt;br /&gt;
RunIPhoneSecurityd.sh
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;#!/bin/sh

set -e
set -u

export DYLD_ROOT_PATH="$1"
export IPHONE_SIMULATOR_ROOT="$1"
export CFFIXED_USER_HOME="$2"

"$IPHONE_SIMULATOR_ROOT"/usr/libexec/securityd&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div style="word-wrap: break-word;"&gt;
12. Add Cocoapods to the rest of your project see here:&amp;nbsp;&lt;a href="http://nscookbook.com/2013/03/recipe-18-unit-testing-with-ghunit-cocoapods/" target="_blank"&gt;http://nscookbook.com/2013/03/recipe-18-unit-testing-with-ghunit-cocoapods/&lt;/a&gt;. Your project settings should look something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-rRGVMiNIJnk/UX8D8SaZtMI/AAAAAAAABWQ/L52pqelqBPM/s1600/Screen+Shot+2013-04-29+at+7.35.22+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="388" src="http://2.bp.blogspot.com/-rRGVMiNIJnk/UX8D8SaZtMI/AAAAAAAABWQ/L52pqelqBPM/s640/Screen+Shot+2013-04-29+at+7.35.22+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
13. In XCode 4.6.2 I had to change my AppDelegate.m file to this to get everything to the code below to get everything to run correctly.&lt;br /&gt;
&lt;br /&gt;
AppDelegate.m&lt;br /&gt;
&lt;pre class="prettyprint"&gt;//
//  main.m
//  LuaUnitTests
//
//  Created by Kurry Tran on 10/15/12.
//  Copyright (c) 2012 Lua Technologies. All rights reserved.
//
#import &lt;uikit it.h=""&gt;
#import &lt;ghunitios nitiosviewcontroller.h=""&gt;

int main(int argc, char *argv[])
{
  int retVal;
  @autoreleasepool {
    if (getenv("GHUNIT_CLI")) {
      retVal = [GHTestRunner run];
    } else {
      retVal = UIApplicationMain(argc, argv, nil, @"GHUnitIOSAppDelegate");
    }
  }
  return retVal;
}
&lt;/ghunitios&gt;&lt;/uikit&gt;&lt;/pre&gt;
Note: This blog article was very short, but I hope it was helpful.&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/ZwmWd4s_XkU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/2835008943690171033/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=2835008943690171033" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/2835008943690171033?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/2835008943690171033?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/ZwmWd4s_XkU/automated-unit-testing-with-jenkins.html" title="Automated Unit Testing with Jenkins, Cocoapods and GHUnit" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-2SDBNj3j9ww/UX8DV7acu3I/AAAAAAAABWI/1jhtXk3aJ_M/s72-c/Screen+Shot+2013-04-29+at+7.32.41+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2013/04/automated-unit-testing-with-jenkins.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEACSHo7fyp7ImA9WhNaFkw.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-1832290910472422076</id><published>2013-01-30T22:10:00.002-08:00</published><updated>2013-01-30T22:12:49.407-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-30T22:12:49.407-08:00</app:edited><title>Tutorial: How To Recover Address Book Contacts From an iPhone Backup</title><content type="html">&lt;br /&gt;
All File Required Here: &lt;a href="http://dl.dropbox.com/u/2127556/Tutorials/iPhone-AddressBook-Tutorial-Files.zip"&gt;http://dl.dropbox.com/u/2127556/Tutorials/iPhone-AddressBook-Tutorial-Files.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
1. Go to&amp;nbsp;&lt;a href="http://supercrazyawesome.com/"&gt;http://supercrazyawesome.com/&lt;/a&gt;&amp;nbsp;and download the program.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-5lQ-ZA9pq7M/UQn3hr9-MOI/AAAAAAAAArc/4HtbqGzr2Dc/s1600/Screen+Shot+2013-01-30+at+11.47.20+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="399" src="http://1.bp.blogspot.com/-5lQ-ZA9pq7M/UQn3hr9-MOI/AAAAAAAAArc/4HtbqGzr2Dc/s640/Screen+Shot+2013-01-30+at+11.47.20+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
2. Install the program and open it, then click "Read Backups"&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-d3oI5qByabE/UQn330Vmi4I/AAAAAAAAAro/etnsScnamCw/s1600/Screen+Shot+2013-01-30+at+11.48.57+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="638" src="http://1.bp.blogspot.com/-d3oI5qByabE/UQn330Vmi4I/AAAAAAAAAro/etnsScnamCw/s640/Screen+Shot+2013-01-30+at+11.48.57+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-tH92SOIrs8s/UQn3__O_VgI/AAAAAAAAArw/uZTQdUD_pFI/s1600/Screen+Shot+2013-01-30+at+11.49.56+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="638" src="http://3.bp.blogspot.com/-tH92SOIrs8s/UQn3__O_VgI/AAAAAAAAArw/uZTQdUD_pFI/s640/Screen+Shot+2013-01-30+at+11.49.56+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
1. Select the device and date of the backup you would like to extract contacts from, and then hit extract.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-r79egTPlr4E/UQn4WbhFuuI/AAAAAAAAAr4/rWYA9EYq0h8/s1600/Screen+Shot+2013-01-30+at+8.22.19+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="638" src="http://2.bp.blogspot.com/-r79egTPlr4E/UQn4WbhFuuI/AAAAAAAAAr4/rWYA9EYq0h8/s640/Screen+Shot+2013-01-30+at+8.22.19+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;2. Then scroll down and select "iOS Files" and then click "Extract" and then pick a place to save the folder.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-NkqtAoXODdU/UQn4aMfi_6I/AAAAAAAAAsA/JAE2rPU1ID0/s1600/Screen+Shot+2013-01-30+at+8.22.29+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="638" src="http://1.bp.blogspot.com/-NkqtAoXODdU/UQn4aMfi_6I/AAAAAAAAAsA/JAE2rPU1ID0/s640/Screen+Shot+2013-01-30+at+8.22.29+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
3. Then open the folder and then locate the file "AddressBook.sqlitedb".&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-cgVnjlRdkcI/UQn5BFymu9I/AAAAAAAAAsI/KU8leiNbwjk/s1600/Screen+Shot+2013-01-30+at+11.53.40+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="340" src="http://3.bp.blogspot.com/-cgVnjlRdkcI/UQn5BFymu9I/AAAAAAAAAsI/KU8leiNbwjk/s640/Screen+Shot+2013-01-30+at+11.53.40+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
4. Make sure the "AddressBook.sqlitedb" and "address-book.sh" file (provided at the beginning of this post) are in the same folder and then open "Terminal". Type "cd" then space, then drag the AddressBook folder onto the Terminal window and hit enter. You should be in the folder as the "address-book.sh" file. Then type "sh address-book.sh".&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-wT5bWBN3wp4/UQoGaNpmm1I/AAAAAAAAAsY/NbiDs_WSSXk/s1600/Screen+Shot+2013-01-31+at+12.44.17+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="304" src="http://1.bp.blogspot.com/-wT5bWBN3wp4/UQoGaNpmm1I/AAAAAAAAAsY/NbiDs_WSSXk/s640/Screen+Shot+2013-01-31+at+12.44.17+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-6HHRdOQWt8M/UQoJhe0uN7I/AAAAAAAAAso/4Vqvp4KuBvY/s1600/Screen+Shot+2013-01-31+at+1.02.41+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="440" src="http://1.bp.blogspot.com/-6HHRdOQWt8M/UQoJhe0uN7I/AAAAAAAAAso/4Vqvp4KuBvY/s640/Screen+Shot+2013-01-31+at+1.02.41+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
5. If you now look again in the folder, the folder now contains two files "address_book_long.csv" and &amp;nbsp;"address_book_short.csv" which contains all of your contacts on your phone.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-tc4hEVO-_tA/UQoJ3LTJOqI/AAAAAAAAAsw/W9ZQapjHMbw/s1600/Screen+Shot+2013-01-31+at+1.05.16+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="304" src="http://2.bp.blogspot.com/-tc4hEVO-_tA/UQoJ3LTJOqI/AAAAAAAAAsw/W9ZQapjHMbw/s640/Screen+Shot+2013-01-31+at+1.05.16+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
6. Open up the files and view all of your contacts. (Blurred For Privacy)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-vG-HDXputKY/UQoK1qx2i0I/AAAAAAAAAs8/i5LBjl81FYE/s1600/Screen+Shot+2013-01-31+at+1.07.18+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-vG-HDXputKY/UQoK1qx2i0I/AAAAAAAAAs8/i5LBjl81FYE/s640/Screen+Shot+2013-01-31+at+1.07.18+AM.png" width="516" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
&lt;a href="http://www.iclarified.com/entry/index.php?enid=4974"&gt;http://www.iclarified.com/entry/index.php?enid=4974&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://yogeshd.blog.com/2011/04/10/viewexport-contacts-from-iphone-addressbook-sqlitedb-file/"&gt;http://yogeshd.blog.com/2011/04/10/viewexport-contacts-from-iphone-addressbook-sqlitedb-file/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://supercrazyawesome.com/"&gt;http://supercrazyawesome.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/SO0Nzx5jq60" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/1832290910472422076/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=1832290910472422076" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/1832290910472422076?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/1832290910472422076?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/SO0Nzx5jq60/tutorial-how-to-recover-address-book.html" title="Tutorial: How To Recover Address Book Contacts From an iPhone Backup" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-5lQ-ZA9pq7M/UQn3hr9-MOI/AAAAAAAAArc/4HtbqGzr2Dc/s72-c/Screen+Shot+2013-01-30+at+11.47.20+PM.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2013/01/tutorial-how-to-recover-address-book.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ACR3s6eip7ImA9WhNVE08.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-8852256556841431188</id><published>2012-12-23T22:15:00.000-08:00</published><updated>2012-12-23T22:16:06.512-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-23T22:16:06.512-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ipaexplorer" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="extraction" /><title>Tutorial: How To Extract iPhone App Artwork Downloaded From iTunes - Example Using Path's iOS App</title><content type="html">1. Search for the app in the iTunes store and download it.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-bZxOGELvIQ4/UNfs6BdNASI/AAAAAAAAAl4/IuyDwwi50pM/s1600/Screen+Shot+2012-12-24+at+12.47.59+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="376" src="http://4.bp.blogspot.com/-bZxOGELvIQ4/UNfs6BdNASI/AAAAAAAAAl4/IuyDwwi50pM/s640/Screen+Shot+2012-12-24+at+12.47.59+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
2. Click on Apps in the left toolbar and search for the app. Then right click and select "Show in Finder".&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-xOCyWKs4r60/UNftam2wgoI/AAAAAAAAAmA/i4WzoJevhFY/s1600/Screen+Shot+2012-12-24+at+12.50.51+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="356" src="http://1.bp.blogspot.com/-xOCyWKs4r60/UNftam2wgoI/AAAAAAAAAmA/i4WzoJevhFY/s640/Screen+Shot+2012-12-24+at+12.50.51+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-qYElutsyVCk/UNftgD1rFsI/AAAAAAAAAmI/FH5kXy3JssY/s1600/Screen+Shot+2012-12-24+at+12.51.06+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="576" src="http://1.bp.blogspot.com/-qYElutsyVCk/UNftgD1rFsI/AAAAAAAAAmI/FH5kXy3JssY/s640/Screen+Shot+2012-12-24+at+12.51.06+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
3. Open the following web page in Apple's Safari web browser&amp;nbsp;&lt;a href="http://www.raisedtech.com/iphone-ipa-png/index.php?r=site/index"&gt;http://www.raisedtech.com/iphone-ipa-png/index.php?r=site/index&lt;/a&gt;. Then upload the iOS App ipa file to the website. The images stored in the ipa are compressed, and the website searches the ipa archive for all images, decompresses them, and then displays them for you.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-jDuC537Cops/UNfuRI6bKVI/AAAAAAAAAmU/rqZcMRsMKS8/s1600/Screen+Shot+2012-12-24+at+12.54.50+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="444" src="http://1.bp.blogspot.com/-jDuC537Cops/UNfuRI6bKVI/AAAAAAAAAmU/rqZcMRsMKS8/s640/Screen+Shot+2012-12-24+at+12.54.50+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Et-qElPDRU8/UNfu49iy0mI/AAAAAAAAAmg/PuF4UN8JPM0/s1600/Screen+Shot+2012-12-24+at+12.57.36+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="444" src="http://3.bp.blogspot.com/-Et-qElPDRU8/UNfu49iy0mI/AAAAAAAAAmg/PuF4UN8JPM0/s640/Screen+Shot+2012-12-24+at+12.57.36+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
4. The file upload and decompression takes a while, so in the mean time create a new folder to download the extracted artwork. I'll call mine "test-artwork".&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
5. Download this web page image downloader script that I made using Mac Automator. It grabs the current page in Safari, retrieves all of the image urls, and then proceeds to download all of the images.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Link: &lt;a href="http://bit.ly/WJv9IS"&gt;http://bit.ly/WJv9IS&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-RfeiZz5ogyY/UNfwLGA00qI/AAAAAAAAAmw/Esqjd_gT5_Q/s1600/Screen+Shot+2012-12-24+at+1.03.03+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="396" src="http://1.bp.blogspot.com/-RfeiZz5ogyY/UNfwLGA00qI/AAAAAAAAAmw/Esqjd_gT5_Q/s640/Screen+Shot+2012-12-24+at+1.03.03+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
6. Once the app is finished uploading, it refreshes the page and here you see all of the artwork for the page.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-E6M3nORphdo/UNfw2PqvK2I/AAAAAAAAAm4/eegtpz3CkU8/s1600/Screen+Shot+2012-12-24+at+1.04.00+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="444" src="http://3.bp.blogspot.com/-E6M3nORphdo/UNfw2PqvK2I/AAAAAAAAAm4/eegtpz3CkU8/s640/Screen+Shot+2012-12-24+at+1.04.00+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
7. Open the Mac Automator script downloaded in step 5. Leave the extracted artwork page as the front most Safari page, select the destination folder for the images, and then click run. The image downloads take a while if there are a lot of images.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-jEPCBvsIeKc/UNfxXlXSZ5I/AAAAAAAAAnE/37geCP_0Uos/s1600/Screen+Shot+2012-12-24+at+1.08.10+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="396" src="http://4.bp.blogspot.com/-jEPCBvsIeKc/UNfxXlXSZ5I/AAAAAAAAAnE/37geCP_0Uos/s640/Screen+Shot+2012-12-24+at+1.08.10+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
8. Complete! Once complete you should see a successful workflow and open the destination folder and there should be images that you can use for research purposes.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-j-GbKjNubLA/UNfx108K48I/AAAAAAAAAnM/KhzcnfgUJEA/s1600/Screen+Shot+2012-12-24+at+1.09.23+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="396" src="http://1.bp.blogspot.com/-j-GbKjNubLA/UNfx108K48I/AAAAAAAAAnM/KhzcnfgUJEA/s640/Screen+Shot+2012-12-24+at+1.09.23+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-vlg-c87o_kg/UNfyOxJJysI/AAAAAAAAAnU/JJTtyaBbjPQ/s1600/Screen+Shot+2012-12-24+at+1.11.13+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="445" src="http://4.bp.blogspot.com/-vlg-c87o_kg/UNfyOxJJysI/AAAAAAAAAnU/JJTtyaBbjPQ/s640/Screen+Shot+2012-12-24+at+1.11.13+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Artwork Here:&amp;nbsp;&lt;a href="http://bit.ly/YDM8g1"&gt;http://bit.ly/YDM8g1&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/h0ojYigMPf4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/8852256556841431188/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=8852256556841431188" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/8852256556841431188?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/8852256556841431188?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/h0ojYigMPf4/tutorial-how-to-extract-iphone-app.html" title="Tutorial: How To Extract iPhone App Artwork Downloaded From iTunes - Example Using Path's iOS App" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-bZxOGELvIQ4/UNfs6BdNASI/AAAAAAAAAl4/IuyDwwi50pM/s72-c/Screen+Shot+2012-12-24+at+12.47.59+AM.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2012/12/tutorial-how-to-extract-iphone-app.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQERH8-cSp7ImA9WhNVE04.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-2488885388218060472</id><published>2012-12-23T21:25:00.001-08:00</published><updated>2012-12-23T22:25:05.159-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-23T22:25:05.159-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uisearchbar" /><category scheme="http://www.blogger.com/atom/ns#" term="customization" /><category scheme="http://www.blogger.com/atom/ns#" term="UIKit" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><title>Tutorial: Customizing UISearchBar</title><content type="html">&lt;a href="http://2.bp.blogspot.com/-8HbCUkyXv6A/UNfnK41pjuI/AAAAAAAAAlo/dUHkeEKKgAs/s1600/iOS+Simulator+Screen+shot+Dec+24,+2012+12.20.46+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&amp;nbsp;&lt;/a&gt;Result:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-Od6_jAroP7Y/UNf09UYBnbI/AAAAAAAAAnk/apY11GJl49Y/s1600/iOS+Simulator+Screen+shot+Dec+24,+2012+1.23.11+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Od6_jAroP7Y/UNf09UYBnbI/AAAAAAAAAnk/apY11GJl49Y/s1600/iOS+Simulator+Screen+shot+Dec+24,+2012+1.23.11+AM.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
To customize UISearchBar you have to override the layout subviews method. To make it slightly more flexible I used tags to determine which background image to load. You have to define the tag in interface builder in the right side panel shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-j6_QbtgwPLg/UNfgB4YI7zI/AAAAAAAAAlY/e1RmrFdw1so/s1600/Screen+Shot+2012-12-23+at+11.52.32+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-j6_QbtgwPLg/UNfgB4YI7zI/AAAAAAAAAlY/e1RmrFdw1so/s1600/Screen+Shot+2012-12-23+at+11.52.32+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class="brush: objc;"&gt;//
//  KTSearchBar.h
//  CustomSearchBar
//
//  Created by Kurry L Tran on 12/23/12.
//  Copyright (c) 2012 Kurry L Tran. All rights reserved.
//

#import &lt;uikit it.h="it.h"&gt;

@interface KTSearchBar : UISearchBar
@property (nonatomic, strong) UIView *inputAccessoryView;
@end

&lt;/uikit&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class="brush: objc;"&gt;//
//  KTSearchBar.m
//  CustomSearchBar
//
//  Created by Kurry L Tran on 12/23/12.
//  Copyright (c) 2012 Kurry L Tran. All rights reserved.
//

#import "KTSearchBar.h"
#import &lt;quartzcore uartzcore.h="uartzcore.h"&gt;

#define KEYBOARD_ACCESSORY_HEIGHT 62
#define kBackgroundOneTag 111
#define kBackgroundTwoTag 112
#define kBackgroundThreeTag 113
#define kBackgroundFourTag 114

@implementation KTSearchBar

- (void)awakeFromNib
{
  [[self.subviews objectAtIndex:0] removeFromSuperview];
  UIImageView *backgroundImageView = nil;
  
  self.layer.borderColor = [[self colorWithHex:0x32363c] CGColor];
  NSLog(@"Tag == %d", self.tag);
  if (self.tag == kBackgroundOneTag) {
    backgroundImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"searchBarBackground@2x.png"]];
    backgroundImageView.frame = CGRectMake(0.0f, 0.0f, 320, 44);
  }else if(self.tag == kBackgroundTwoTag){
    backgroundImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"search-bg-all@2x.png"]];
    backgroundImageView.frame = CGRectMake(0.0f, 0.0f, 320, 44);
  }else if(self.tag == kBackgroundThreeTag){
    backgroundImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"searchBar@2x.png"]];
    backgroundImageView.frame = CGRectMake(0.0f, 0.0f, 320, 44);
  }else if(self.tag == kBackgroundFourTag){
    backgroundImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"search-bg-all-dark@2x.png"]];
    backgroundImageView.frame = CGRectMake(0.0f, -1.0f, 320, 44);
  }
  
  [self addSubview:backgroundImageView];
  
}


- (void)layoutSubviews {
  
  [self setShowsCancelButton:NO animated:NO];
  UITextField *searchField;
  NSUInteger numViews = [self.subviews count];
  for(int i = 0; i &amp;lt; numViews; i++) {
    if([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { //conform?
      searchField = [self.subviews objectAtIndex:i];
    }
  }
  [self bringSubviewToFront:searchField];
  if(!(searchField == nil)) {
    searchField.textColor = [self colorWithHex:0x8b909c];
    searchField.font = [UIFont fontWithName:@"MyriadPro-It" size:18];
    searchField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    [searchField setBorderStyle:UITextBorderStyleNone];
    [searchField setBackgroundColor:[UIColor clearColor]];
    [searchField setRightView:nil];
    [searchField setBackground:nil];

    if (self.tag != kBackgroundThreeTag) {
      UIImage *image = [UIImage imageNamed:@"MagnifyingGlassDark"];
      UIImageView *iView = [[UIImageView alloc] initWithImage:image];
      searchField.leftView.opaque = YES;
      searchField.leftView = iView;
    }else
      searchField.leftView  = nil;

  }
  [super layoutSubviews];
}

// http://stackoverflow.com/questions/1560081/how-can-i-create-a-uicolor-from-a-hex-string
- (UIColor *) colorWithHex:(int)hex {
  return [UIColor colorWithRed:((float)((hex &amp;amp; 0xFF0000) &amp;gt;&amp;gt; 16))/255.0
                         green:((float)((hex &amp;amp; 0xFF00) &amp;gt;&amp;gt; 8))/255.0
                          blue:((float)(hex &amp;amp; 0xFF))/255.0 alpha:1.0];
}




@end&lt;/quartzcore&gt;&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;/pre&gt;
Sample Project: &lt;a href="http://bit.ly/VYuflp"&gt;http://bit.ly/VYuflp&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/S4hfDszcMkk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/2488885388218060472/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=2488885388218060472" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/2488885388218060472?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/2488885388218060472?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/S4hfDszcMkk/tutorial-customizing-uisearchbar.html" title="Tutorial: Customizing UISearchBar" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-Od6_jAroP7Y/UNf09UYBnbI/AAAAAAAAAnk/apY11GJl49Y/s72-c/iOS+Simulator+Screen+shot+Dec+24,+2012+1.23.11+AM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2012/12/tutorial-customizing-uisearchbar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08NQns5eip7ImA9WhNVE08.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-2258703348947992703</id><published>2012-12-23T19:57:00.002-08:00</published><updated>2012-12-23T22:18:13.522-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-23T22:18:13.522-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="UITableViewCell" /><category scheme="http://www.blogger.com/atom/ns#" term="dropshadow" /><category scheme="http://www.blogger.com/atom/ns#" term="customization" /><category scheme="http://www.blogger.com/atom/ns#" term="UIKit" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="uitableview" /><title>Tutorial: Adding a Drop Shadow To Last Row of UITableView</title><content type="html">&lt;br /&gt;
&lt;pre class="brush: objc;"&gt;//
//  UITableViewCell+DropShadow.h
//  TableViewCellDropShadow
//
//  Created by Kurry L Tran on 12/23/12.
//  Copyright (c) 2012 Kurry L Tran. All rights reserved.
//
 
#import &amp;lt;UIKit/UIKit.h&amp;gt;
 
@interface UITableViewCell (DropShadow)
-(void)addDropShadow;
-(void)removeDropShadow;
@end
&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;//
//  UITableViewCell+DropShadow.m
//  TableViewCellDropShadow
//
//  Created by Kurry L Tran on 12/23/12.
//  Copyright (c) 2012 Kurry L Tran. All rights reserved.
//
 
#import "UITableViewCell+DropShadow.h"
#import &amp;lt;QuartzCore/QuartzCore.h&amp;gt;
 
@implementation UITableViewCell (DropShadow)
 
-(void)addDropShadow
{
  self.layer.shadowOffset = CGSizeMake(0, 10);
  self.layer.shadowColor = [[UIColor blackColor] CGColor];
  self.layer.shadowRadius = 3;
  self.layer.shadowOpacity = .75;
  CGRect shadowFrame = self.layer.bounds;
  CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:shadowFrame].CGPath;
  self.layer.shadowPath = shadowPath;
}
 
-(void)removeDropShadow
{
  self.layer.shadowOpacity = 0;
}
@end&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;Example Usage: &lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;// Customize the appearance of table view cells.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
       cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

  NSDate *object = _objects[indexPath.row];

  cell.textLabel.text = [object description];
  NSInteger numberOfSections = [self numberOfSectionsInTableView:tableView];
  NSInteger numberOfRows = [self tableView:tableView numberOfRowsInSection:(numberOfSections-1)];

  if (indexPath.section == (numberOfSections - 1) &amp;amp;&amp;amp; indexPath.row == (numberOfRows-1))
    [cell addDropShadow];
  else
   [cell removeDropShadow];

  return cell;
}

- (void)viewWillAppear:(BOOL)animated

{
  NSInteger numberOfSections = [self numberOfSectionsInTableView:self.tableView];
  NSInteger numberOfRows = [self tableView:self.tableView numberOfRowsInSection:(numberOfSections-1)];
  NSIndexPath *indexPath = [NSIndexPath indexPathForRow:(numberOfRows -1) inSection:(numberOfSections-1)];
  UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
  [cell addDropShadow];
}

&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;span style="font-family: Times; white-space: normal;"&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;/pre&gt;
&lt;pre class="brush: objc;"&gt;&lt;/pre&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-YCrN-7cEwaQ/UNfH5Ipx8CI/AAAAAAAAAlI/7akRBiZ4HsA/s1600/iOS+Simulator+Screen+shot+Dec+23%252C+2012+9.59.46+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-YCrN-7cEwaQ/UNfH5Ipx8CI/AAAAAAAAAlI/7akRBiZ4HsA/s1600/iOS+Simulator+Screen+shot+Dec+23%252C+2012+9.59.46+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Sample Project :&amp;nbsp;&lt;a href="http://bit.ly/W10XCU"&gt;http://bit.ly/W10XCU&lt;/a&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/CXKO76mj7jI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/2258703348947992703/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=2258703348947992703" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/2258703348947992703?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/2258703348947992703?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/CXKO76mj7jI/adding-drop-shadow-to-last-row-of.html" title="Tutorial: Adding a Drop Shadow To Last Row of UITableView" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-YCrN-7cEwaQ/UNfH5Ipx8CI/AAAAAAAAAlI/7akRBiZ4HsA/s72-c/iOS+Simulator+Screen+shot+Dec+23%252C+2012+9.59.46+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2012/12/adding-drop-shadow-to-last-row-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUHRXw9fip7ImA9WhNVE0w.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-7236589539210879469</id><published>2012-12-23T18:47:00.000-08:00</published><updated>2012-12-23T18:47:14.266-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-23T18:47:14.266-08:00</app:edited><title>Blog Updates</title><content type="html">I decided that I was going to start writing blog posts again. I realized that writing tutorials takes a really long time and causes burnout so I'm going to be posting much shorter, and much more useful posts. All of the posts will be based around one topic, with a point, example, and explanation, with sample code. Mainly, all of the topics will be things that I wish someone had explained to me when I had started programming iPhone apps.&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/iMSAOWeUYvo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/7236589539210879469/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=7236589539210879469" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/7236589539210879469?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/7236589539210879469?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/iMSAOWeUYvo/blog-updates.html" title="Blog Updates" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2012/12/blog-updates.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UGSXg7eyp7ImA9WhJUE04.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-1628229399344883833</id><published>2012-09-10T21:53:00.002-07:00</published><updated>2012-09-10T21:53:48.603-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-10T21:53:48.603-07:00</app:edited><title>Job Posting </title><content type="html">&lt;span style="background-color: white; color: #333333; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px;"&gt;For anyone looking for a software engineering job based in SF, my friend&amp;nbsp;&lt;/span&gt;&lt;a data-hovercard="/ajax/hovercard/user.php?id=1240830156" href="https://www.facebook.com/McKinleyTennant" style="background-color: white; color: #3b5998; cursor: pointer; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; text-decoration: none;"&gt;McKinley Tennant&lt;/a&gt;&lt;span style="background-color: white; color: #333333; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px;"&gt;&amp;nbsp;is hiring at AVOS Systems, an internet company led by YouTube co-founders Chad Hurley and Steve Chen. Check out avos.com and contact mckinley@avos.com if you're interested.&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/NrZtdQ2EK10" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/1628229399344883833/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=1628229399344883833" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/1628229399344883833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/1628229399344883833?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/NrZtdQ2EK10/job-posting.html" title="Job Posting " /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2012/09/job-posting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04GQXk-eyp7ImA9WhNVE08.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-6389381528686934324</id><published>2012-06-17T12:17:00.001-07:00</published><updated>2012-12-23T22:18:40.753-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-23T22:18:40.753-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><title>Tutorial: Concurrency with Core Data Tutorial</title><content type="html">&lt;br /&gt;
I thought that all of the important Core Data articles were scattered in so many places and so I thought I should make a good set of notes. None of the text below reflect my own words, and they are taken directly from the Apple articles in the links. I had set out to start using Core Data in multiple threads, but then I realized my understanding of the theory of Core Data was weak, and so I thought I should build a solid understanding before I started programming.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://developer.apple.com/library/mac/#documentation/DataManagement/Devpedia-CoreData/coreDataOverview.html#//apple_ref/doc/uid/TP40010398-CH28-SW1"&gt;Core Data Core Competencies&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Core Data&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
You use Core Data to manage the model (in the model-view-controller sense of the word) objects in your application. Core Data is an object-graph management and persistence framework. Among other things, it:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;Allows you to efficiently fetch model objects from a persistent store and save changes back to the store.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;Provides an infrastructure for tracking changes to your model objects. It gives you automatic support for undo and redo, and for maintaining reciprocal relationships between objects.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;Allows you to maintain disjoint sets of edits of your model objects. Disjoint sets are useful if you want to, for example, allow the user to make edits in one view that may be discarded without affecting data displayed in another view.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;Allows you to keep just a subset of your model objects in memory at any given time. This is useful for keeping the memory footprint of your application as low as possible.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;Has an infrastructure for data store versioning and migration. This infrastructure lets you easily upgrade an old version of the data file to the current version.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
To support this functionality, Core Data uses a schema called a &lt;i&gt;managed object model&lt;/i&gt; that describes the entities in your application.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;
&lt;b&gt;&lt;u&gt;Core Data Stack&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; margin-bottom: 0.833em;"&gt;
A Core Data stack is composed of the following objects: one or more managed object contexts connected to a single persistent store coordinator which is in turn connected to one or more persistent stores. A stack contains all the Core Data components you need to fetch, create, and manipulate managed objects. Minimally it contains:&lt;/div&gt;
&lt;ul class="ul" style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; list-style-image: initial; list-style-position: outside; margin: 0px 0px 0.833em 1.35em; padding: 0px 0px 0.5em;"&gt;
&lt;li class="li" style="margin-top: 0.583em;"&gt;&lt;div style="display: inline; line-height: 1.6; margin-bottom: 0.833em; margin-top: 0.667em;"&gt;
An external persistent store that contains saved records.&lt;/div&gt;
&lt;/li&gt;
&lt;li class="li" style="margin-top: 0.583em;"&gt;&lt;div style="display: inline; line-height: 1.6; margin-bottom: 0.833em; margin-top: 0.667em;"&gt;
A persistent object store that maps between records in the store and objects in your application.&lt;/div&gt;
&lt;/li&gt;
&lt;li class="li" style="margin-top: 0.583em;"&gt;&lt;div style="display: inline; line-height: 1.6; margin-bottom: 0.833em; margin-top: 0.667em;"&gt;
A persistent store coordinator that aggregates all the stores.&lt;/div&gt;
&lt;/li&gt;
&lt;li class="li" style="margin-top: 0.583em;"&gt;&lt;div style="display: inline; line-height: 1.6; margin-bottom: 0.833em; margin-top: 0.667em;"&gt;
A managed object model that describes the entities in the stores.&lt;/div&gt;
&lt;/li&gt;
&lt;li class="li" style="margin-top: 0.583em;"&gt;&lt;div style="display: inline; line-height: 1.6; margin-bottom: 0.833em; margin-top: 0.667em;"&gt;
A managed object context that provides a scratch pad for managed objects.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://developer.apple.com/library/mac/documentation/DataManagement/Devpedia-CoreData/Art/single_persistent_stack.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="219" src="http://developer.apple.com/library/mac/documentation/DataManagement/Devpedia-CoreData/Art/single_persistent_stack.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Managed Object&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;A managed object is a model object (in the model-view-controller sense) that represents a record from a persistent store. A managed object is an instance of&amp;nbsp;&lt;/span&gt;&lt;code style="background-color: white; font-family: Courier, Consolas, monospace; font-size: 13px;"&gt;NSManagedObject&lt;/code&gt;&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;&amp;nbsp;or a subclass of&amp;nbsp;&lt;/span&gt;&lt;code style="background-color: white; font-family: Courier, Consolas, monospace; font-size: 13px;"&gt;NSManagedObject&lt;/code&gt;&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;. A managed object is registered with a managed object context. In any given context, there is at most one instance of a managed object that corresponds to a given record in a persistent store.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://developer.apple.com/library/mac/documentation/DataManagement/Devpedia-CoreData/Art/mapping_moc_record.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://developer.apple.com/library/mac/documentation/DataManagement/Devpedia-CoreData/Art/mapping_moc_record.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;A managed object has a reference to an entity description object that tells it what entity it represents. In this way,&lt;/span&gt;&lt;code style="background-color: white; font-family: Courier, Consolas, monospace; font-size: 13px;"&gt;NSManagedObject&lt;/code&gt;&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;&amp;nbsp;can represent any entity—you don’t&amp;nbsp;&lt;/span&gt;&lt;em style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;need&lt;/em&gt;&lt;span style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;&amp;nbsp;a unique subclass per entity. You use a subclass if you want to implement custom behavior, for example to calculate a derived property value, or to implement validation logic.&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #666666; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;u&gt;Managed Object Context&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; margin-bottom: 0.833em;"&gt;
&lt;b&gt;&lt;i&gt;A managed object context represents a single object space, or scratch pad, in a Core Data application.&lt;/i&gt;&lt;/b&gt; A managed object context is an instance of&amp;nbsp;&lt;code style="font-family: Courier, Consolas, monospace;"&gt;NSManagedObjectContext&lt;/code&gt;. &lt;b&gt;&lt;i&gt;Its primary responsibility is to manage a collection of managed objects. &lt;/i&gt;&lt;/b&gt;These managed objects represent an internally consistent view of one or more persistent stores. The context is a powerful object with a central role in the life-cycle of managed objects, with responsibilities from life-cycle management (including faulting) to validation, inverse relationship handling, and undo/redo.&lt;/div&gt;
&lt;div style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; margin-bottom: 0.833em;"&gt;
From your perspective, the context is the central object in the Core Data stack. It’s the object you use to create and fetch managed objects, and to manage undo and redo operations. Within a given context, there is at most one managed object to represent any given record in a persistent store.&lt;/div&gt;
&lt;br /&gt;
&lt;span style="background-color: white; color: #666666; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://developer.apple.com/library/mac/documentation/DataManagement/Devpedia-CoreData/Art/moc_record.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://developer.apple.com/library/mac/documentation/DataManagement/Devpedia-CoreData/Art/moc_record.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="background-color: white; color: #666666; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; margin-bottom: 0.833em;"&gt;
A context is connected to a parent object store. This is usually a persistent store coordinator, but may be another managed object context. When you fetch objects, the context asks its parent object store to return those objects that match the fetch request. Changes that you make to managed objects are not committed to the parent store until you save the context.&lt;/div&gt;
&lt;div style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; margin-bottom: 0.833em;"&gt;
In some applications, you may have just a single context. In others, however, you might have more than one. You might want to maintain discrete sets of managed objects and edits to those objects; or you might want to perform a background operation using one context while allowing the user to interact with objects in another.&lt;/div&gt;
&lt;div style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; margin-bottom: 0.833em;"&gt;
&lt;b style="font-family: Times; font-size: medium; line-height: normal;"&gt;&lt;u&gt;Persistent Store Coordinator&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; margin-bottom: 0.833em;"&gt;
&lt;b&gt;&lt;i&gt;A persistent store coordinator associates persistent object stores and a managed object model, and presents a facade to managed object contexts such that a group of persistent stores appears as a single aggregate store.&lt;/i&gt;&lt;/b&gt; A persistent store coordinator is an instance of&amp;nbsp;&lt;code style="font-family: Courier, Consolas, monospace;"&gt;&lt;a href="http://developer.apple.com/library/mac/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSPersistentStoreCoordinator_Class/NSPersistentStoreCoordinator.html#//apple_ref/occ/cl/NSPersistentStoreCoordinator" style="text-decoration: none;" target="_top"&gt;NSPersistentStoreCoordinator&lt;/a&gt;&lt;/code&gt;. It has a reference to a managed object model that describes the entities in the store or stores it manages.&lt;/div&gt;
&lt;div style="background-color: white; margin-bottom: 0.833em;"&gt;
&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; margin-bottom: 0.833em;"&gt;
&lt;b style="font-family: Times; font-size: medium; line-height: normal;"&gt;&lt;u&gt;Fetch Request&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0.833em;"&gt;
&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; margin-bottom: 0.833em;"&gt;
&lt;b&gt;&lt;i&gt;A fetch request tells a managed object context the entity of the managed objects that you want to fetch; optionally, it specifies other aspects such as constraints on the values the objects' properties must have and the order you want the objects returned in.&lt;/i&gt;&lt;/b&gt; A fetch request is an instance of&amp;nbsp;&lt;code style="font-family: Courier, Consolas, monospace;"&gt;NSFetchRequest&lt;/code&gt;. The entity it specifies is represented by an instance of&amp;nbsp;&lt;code style="font-family: Courier, Consolas, monospace;"&gt;NSEntityDescription&lt;/code&gt;; any constraints are represented by an&amp;nbsp;&lt;code style="font-family: Courier, Consolas, monospace;"&gt;NSPredicate&lt;/code&gt;&amp;nbsp;object, and the ordering by an array of one or more instances of&amp;nbsp;&lt;code style="font-family: Courier, Consolas, monospace;"&gt;NSSortDescriptor&lt;/code&gt;. These are akin to the table name, WHERE clause, and ORDER BY clauses of a database SELECT statement respectively.&lt;/div&gt;
&lt;br /&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6;"&gt;
&lt;b style="font-family: Times; font-size: medium; line-height: normal;"&gt;&lt;u&gt;Persistent Store&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6;"&gt;
&lt;b style="line-height: 1.6;"&gt;&lt;i&gt;A persistent store is a repository in which managed objects may be stored.&lt;/i&gt;&lt;/b&gt;&lt;span style="line-height: 1.6;"&gt; You can think of a persistent store as a database data file where individual records each hold the last-saved values of a managed object. Core Data offers three native file types for a persistent store: binary, XML, and SQLite. You can implement your own store type if you want Core Data to interoperate with a custom file format or server. Core Data also provides an in-memory store that lasts no longer than the lifetime of a process.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="background-color: white; margin-bottom: 0.833em;"&gt;
&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6;"&gt;
&lt;b style="font-family: Times; font-size: medium; line-height: normal;"&gt;&lt;u&gt;Managed Object Model&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6;"&gt;
&lt;b&gt;&lt;i&gt;A managed object model is a set of objects that together form a blueprint describing the managed objects you use in your application. &lt;/i&gt;&lt;/b&gt;A model allows Core Data to map from records in a persistent store to managed objects that you use in your application. It is a collection of entity description objects (instances of&amp;nbsp;&lt;code style="font-family: Courier, Consolas, monospace;"&gt;&lt;a href="http://developer.apple.com/library/mac/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSEntityDescription_Class/NSEntityDescription.html#//apple_ref/occ/cl/NSEntityDescription" style="text-decoration: none;" target="_top"&gt;NSEntityDescription&lt;/a&gt;&lt;/code&gt;). An entity description describes an entity (which you can think of as a table in a database) in terms of its name, the name of the class used to represent the entity in your application, and what properties (attributes and relationships) it has.&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6;"&gt;
&lt;div style="line-height: 1.6;"&gt;
&lt;b style="font-family: Times; font-size: medium; line-height: normal;"&gt;&lt;u&gt;Persistent Object Store&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; margin-bottom: 0.833em;"&gt;
&lt;b&gt;&lt;i&gt;A persistent object store maps between objects in your application and records in a persistent store. &lt;/i&gt;&lt;/b&gt;There are different classes of persistent object store for the different file types that Core Data supports. You can also implement your own if you want to support a custom file type.&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6;"&gt;
&lt;b style="font-family: Times; font-size: medium; line-height: normal;"&gt;&lt;u&gt;Mapping Model&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6;"&gt;
&lt;b&gt;&lt;i&gt;A Core Data mapping model describes the transformations that are required to migrate data described by a source managed object model to the schema described by a destination model.&lt;/i&gt;&lt;/b&gt; When you make a new version of a managed object model, you need to migrate persistent stores from the old schema to the new.&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 20px;"&gt;&lt;a href="http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html#//apple_ref/doc/uid/TP40004399"&gt;&lt;i&gt;Core Data Model Versioning and Data Migration Programming Guide&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Lucida Grande', Geneva, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6;"&gt;
&lt;a href="http://developer.apple.com/library/mac/documentation/General/Conceptual/ConcurrencyProgrammingGuide/ConcurrencyProgrammingGuide.pdf" style="background-color: transparent; line-height: 1.6;"&gt;Concurrency Programming Guide&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Summary of Concurrency Programming Guide&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
There needs to be a way for applications to take advantage of a variable number of computer cores. The amount of work performed by a single application also needs to be able to scale dynamically to accommodate changing system conditions. And the solution has to be simple enough so as to not increase the amount of work needed to take advantage of those cores.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;The Move Away from Threads&lt;/u&gt;:&lt;br /&gt;
Instead of relying on threads, Mac OS X and iOS take an asynchronous design approach to solving the concurrency problem. In Mac OS X and iOS allows you to perform any task asynchronously without having to manage the threads yourself.&lt;br /&gt;
&lt;br /&gt;
One of the technologies for starting tasks asynchronously is &lt;b&gt;Grand Central Dispatch (GCD)&lt;/b&gt;. This technology takes the thread management code you would normally write in your own applications and moves that code down to the system level. All you have to do is define the tasks you want to exectute and add them to an appropriate dispatch queue. GCD takes care of creating the needed threads and of scheduling tasks to run on those threads. Because the thread management is now part of the system, GCD provides a holistic approach to task&amp;nbsp;management&amp;nbsp;and execution, providing better efficiency than traditional threads.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Operation queues &lt;/b&gt;are&amp;nbsp;Objective-C objects that act very much like dispatch queues. You define the tasks you want to execute and then add them to an operation queue, which handles the scheduling and execution of those tasks. Like GCD, operation queues handle all of the thread management for you, ensuring that tasks are executed as quickly and efficiently as possible on the system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Dispatch queues &lt;/b&gt;are a C-based mechanism for executing custom tasks. A &lt;b&gt;dispatch queue&lt;/b&gt;&amp;nbsp;executes tasks either serially or concurrently but always in a first-in, first-out order.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-weight: bold;"&gt;
Dispatch queues have other benefits:&lt;/div&gt;
● They provide a straightforward and simple programming interface.&lt;br /&gt;
● They offer automatic and holistic thread pool management.&lt;br /&gt;
● They provide the speed of tuned assembly.&lt;br /&gt;
● They are much more memory efficient (because thread stacks do not linger in application memory).&lt;br /&gt;
● They do not trap to the kernel under load.&lt;br /&gt;
● The asynchronous dispatching of tasks to a dispatch queue cannot deadlock the queue.&lt;br /&gt;
● They scale gracefully under contention.&lt;br /&gt;
● Serial dispatch queues offer a more efficient alternative to locks and other synchronization primitives.&lt;br /&gt;
&lt;br /&gt;
The tasks you submit to a dispatch queue must be encapsulated inside either a function or a block object. &lt;b&gt;Block objects&lt;/b&gt;&amp;nbsp;are a C language feature introduced in Mac OS X v 10.6 and iOS 4.0 that are similar to function pointers conceptually, but have some addition benefits.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Dispatch sources &lt;/b&gt;are a C-based mechanism for processing specific types of system events asynchronously. A dispatch source encapsulates information about particular type of system event and submits a specific block object or function to a dispatch queue whenever the event occurs.&lt;br /&gt;
&lt;br /&gt;
An &lt;b&gt;operation queue &lt;/b&gt;is the Cocoa equivalent of a concurrent dispatch queue and is implemented by the &lt;i&gt;NSOperationQueue&lt;/i&gt; class. Whereas dispatch queues always execute tasks first-in, first-out order, operation queues take other factors into account when determining the execution order of tasks.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;You can use dispatch sources to monitor the following types of events:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
● Timers&lt;br /&gt;
● Signal handlers&lt;br /&gt;
● Descriptor-related events&lt;br /&gt;
● Process-related events&lt;br /&gt;
● Mach port events&lt;br /&gt;
● Custom events that you trigger&lt;br /&gt;
&lt;br /&gt;
Before you even consider redesigning your code to support concurrency, you should ask yourself whether doing so is&amp;nbsp;necessary. Concurrency can improve the responsiveness of your code by ensuring that your main thread is free to respond to user events. It can even improve the efficiency of your code by leveraging more cores to do more work in the same amount of time. &lt;b&gt;However, it also adds overhead and increases the overall complexity of your code, making it harder to write and debug your code.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Tips for Improving Efficiency:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
● Consider computing values directly within your task if memory usage is a factor.&lt;br /&gt;
●&amp;nbsp;Identify serial tasks early and do what you can to make them more concurrent.&lt;br /&gt;
&lt;div style="display: inline !important;"&gt;
● Avoid using locks.&amp;nbsp;&lt;/div&gt;
&lt;div style="display: inline !important;"&gt;
● Rely on the system frameworks whenever possible.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href="http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/coredata/Articles/cdConcurrency.html#//apple_ref/doc/uid/TP40003385-SW1"&gt;Core Data Programming Guide&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Summary of Core Data Programming Guide&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
1. There are several situations in which performing operating with Core Data on a background thread or thread queues beneficial, in particular if you want to ensure that your application's user interface remain responsive while Core Data is undertaking a long-running task.&lt;br /&gt;
&lt;br /&gt;
The pattern recommended for concurrent programming with Core Data is thread confinement: each thread must have its own entirely private managed object context.&lt;br /&gt;
&lt;br /&gt;
There are two possible ways to adopt the pattern:&lt;br /&gt;
&lt;br /&gt;
1. Create a separate managed object context for each thread and share a single persistent store coordinator.&lt;br /&gt;
&lt;br /&gt;
2. Create a separate managed object context and persistent store coordinator for each thread.&lt;br /&gt;
&lt;br /&gt;
This approach provides for greater concurrency at the expense of greater complexity (particular if you need to communicate changes between different contexts) and increase memory usage.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://developer.apple.com/library/ios/#samplecode/ThreadedCoreData/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010723"&gt;Threaded Core Data&lt;/a&gt;&lt;br /&gt;
Note: You can use threads, serial operations queues, or dispatch queues for concurrency. For the sake of conciseness, this article uses "thread" throughout to refer to refer to any to these.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Blocks simplify function callbacks.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;*&lt;/b&gt; is a pointer to a function. i.e. int (*cmpr)(int, int)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;^ &lt;/b&gt;is a pointer to a block. i.e. int(^cmpr)(int, int)&lt;/li&gt;
&lt;li&gt;A block is a chunk of executable code. The caret introduces a block literal and the curly braces enclose statements that make up the body of the block. The most common way to use a block is to pass it a method that in turn calls the block.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;In practice, blocks are most useful when you pass them as parameters to methods that in turn call the block.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;In practice, it's more convenient to use inline blocks rather than assigning the block to a typed variable and then passing it to the method.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Great Objective-C Programming Resources Here:&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;&lt;a href="http://www.ict.griffith.edu.au/teaching/2501ICT/content.shtml"&gt;http://www.ict.griffith.edu.au/teaching/2501ICT/content.shtml&lt;/a&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;&lt;a href="http://www.macresearch.org/cocoa-scientists-xxxii-10-uses-blocks-cobjective-c"&gt;http://www.macresearch.org/cocoa-scientists-xxxii-10-uses-blocks-cobjective-c&lt;/a&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Programming Blocks and Uses for Blocks in C/Objective-C&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Example Code:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://gist.github.com/2945487"&gt;https://gist.github.com/2945487&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Project: &lt;a href="http://bit.ly/P66DdR"&gt;http://bit.ly/P66DdR&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/muV6Qik2SDw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/6389381528686934324/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=6389381528686934324" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/6389381528686934324?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/6389381528686934324?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/muV6Qik2SDw/concurrency-with-core-data-tutorial.html" title="Tutorial: Concurrency with Core Data Tutorial" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2012/06/concurrency-with-core-data-tutorial.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04ESX48fip7ImA9WhNVE08.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-879035959623792104</id><published>2012-02-25T11:27:00.001-08:00</published><updated>2012-12-23T22:18:28.076-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-23T22:18:28.076-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><title>Tutorial: How To Uninstall Mountain Lion OS X</title><content type="html">Story: I have a problem of downloading and installing any new Apple product once it comes out and so I downloaded and installed Mountain Lion OS X on my main machine (MacBook Air) and then I realized that it had a lot of problems and a lot of my programs were having not compatible with it, so I tried to uninstall it. I ran into a lot of trouble and there was not a lot of good info online and it took me a long time how to figure out (14+ hours), so I thought I would write a blog post so other people wouldn't have to go through the same trouble. This blog post is short because I have a ton of homework and life stuff so I just put the most essential info in it.&lt;br /&gt;
&lt;br /&gt;
1. I first tried to log into my Mac Developer Account and download Mac OS X Lion through the Mac App Store, but the installer will tell you that you can't install Mac OS X Lion because you have a newer version of Mac OS X installed.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-h_icQWnkNyE/T0kxoCgTYEI/AAAAAAAAAgw/LqXsGwLo3OQ/s1600/Screen+Shot+2012-02-25+at+2.04.41+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="497" src="http://1.bp.blogspot.com/-h_icQWnkNyE/T0kxoCgTYEI/AAAAAAAAAgw/LqXsGwLo3OQ/s640/Screen+Shot+2012-02-25+at+2.04.41+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
2. I then obtained the &lt;i&gt;Install Mac OS X Lion &lt;/i&gt;through another means (you should find some way to get this). Note: You have to get Mac OS X Lion 10.7.2 or above.&lt;br /&gt;
&lt;br /&gt;
Once I obtained it if you double click the installer nothing will happen. Right click the app and click show package contents.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-j-BShQQcNSI/T0kyTi3YR4I/AAAAAAAAAg4/D97aBkg259E/s1600/Screen+Shot+2012-02-25+at+2.10.13+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-j-BShQQcNSI/T0kyTi3YR4I/AAAAAAAAAg4/D97aBkg259E/s400/Screen+Shot+2012-02-25+at+2.10.13+PM.png" width="300" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
3. Go to Contents &amp;gt; SharedSupport &amp;gt; OSinstall.mpkg and double click the package and you will get this error.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-BNPrqYspBFY/T0kyu-VE4aI/AAAAAAAAAhA/05o1h7fWQys/s1600/Screen+Shot+2012-02-25+at+2.11.55+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="456" src="http://3.bp.blogspot.com/-BNPrqYspBFY/T0kyu-VE4aI/AAAAAAAAAhA/05o1h7fWQys/s640/Screen+Shot+2012-02-25+at+2.11.55+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
4. In Finder search for the Disk Utility App and create a partition for Mac OS X Lion.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-dE47knXajvg/T0kzZfDbq4I/AAAAAAAAAhI/2CvE0gpSxEQ/s1600/Screen+Shot+2012-02-25+at+2.15.02+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="552" src="http://1.bp.blogspot.com/-dE47knXajvg/T0kzZfDbq4I/AAAAAAAAAhI/2CvE0gpSxEQ/s640/Screen+Shot+2012-02-25+at+2.15.02+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
5. Once you create a partition you have to open &lt;i&gt;Terminal &lt;/i&gt;to change the Mac OS X version number so you can install Mac OS X Lion on the partition.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Before:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-YxzgaznH1d8/T0kzxpx2ywI/AAAAAAAAAhQ/i9LXalKdS1A/s1600/Screen+Shot+2012-02-25+at+2.17.03+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-YxzgaznH1d8/T0kzxpx2ywI/AAAAAAAAAhQ/i9LXalKdS1A/s320/Screen+Shot+2012-02-25+at+2.17.03+PM.png" width="263" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
6. To change the Mac OS X version number you have to change the settings of the file &lt;i&gt;/System/Library/CoreServices/SystemVersion.plist&lt;/i&gt; and then modify it in a text editor.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-gzjbqdgMhCs/T0k02qegLdI/AAAAAAAAAhY/P-ZP0YjVQr8/s1600/Screen+Shot+2012-02-25+at+2.19.59+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="338" src="http://1.bp.blogspot.com/-gzjbqdgMhCs/T0k02qegLdI/AAAAAAAAAhY/P-ZP0YjVQr8/s640/Screen+Shot+2012-02-25+at+2.19.59+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Before:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Y2Aou1vtmSw/T0k07yrPG4I/AAAAAAAAAhg/IOzy0Zh5JP8/s1600/Screen+Shot+2012-02-25+at+2.19.27+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="340" src="http://3.bp.blogspot.com/-Y2Aou1vtmSw/T0k07yrPG4I/AAAAAAAAAhg/IOzy0Zh5JP8/s640/Screen+Shot+2012-02-25+at+2.19.27+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
After:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;span id="goog_1098614903"&gt;&lt;/span&gt;&lt;span id="goog_1098614904"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-p0opV4uBtDQ/T0k1K4iVbVI/AAAAAAAAAho/R_mqq_-aFoU/s1600/Screen+Shot+2012-02-25+at+2.19.45+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="340" src="http://3.bp.blogspot.com/-p0opV4uBtDQ/T0k1K4iVbVI/AAAAAAAAAho/R_mqq_-aFoU/s640/Screen+Shot+2012-02-25+at+2.19.45+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-yN14TPvZqlQ/T0k1O4JyeZI/AAAAAAAAAhw/leZ9M8KZWmc/s1600/Screen+Shot+2012-02-25+at+2.20.09+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-yN14TPvZqlQ/T0k1O4JyeZI/AAAAAAAAAhw/leZ9M8KZWmc/s400/Screen+Shot+2012-02-25+at+2.20.09+PM.png" width="323" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
7. Then you should be able to run the installer and install Mac OS X Lion on the disk partition. I think this worked for me. If not drag and drop the package contents of the installer app into the new partition and then restart your computer and load the new disk partition. (Restart the computer and hold the &lt;i&gt;option&lt;/i&gt;&amp;nbsp;button and then select the correct disk partition)&amp;nbsp;&lt;b&gt;Do not restore the Mac OS X Lion disk image into the disk partition.&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
8. If you could not run the Mac OS X Lion installer from OS X Mountain Lion, mount the disk image and copy the entire contents of that into your new disk partition, and then load that on startup.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-8LctLwyvxvw/T0k7WbdjEhI/AAAAAAAAAh4/7dS2b3k5F2I/s1600/Screen+Shot+2012-02-25+at+2.49.09+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://3.bp.blogspot.com/-8LctLwyvxvw/T0k7WbdjEhI/AAAAAAAAAh4/7dS2b3k5F2I/s320/Screen+Shot+2012-02-25+at+2.49.09+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;b&gt;Note: If you get errors about the disk being locked you did something wrong. Create a brand new partition and drag and drop the installer package contents into the new disk partition, and then restart the computer.&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/DguxeV5Ap3E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/879035959623792104/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=879035959623792104" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/879035959623792104?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/879035959623792104?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/DguxeV5Ap3E/how-to-uninstall-mountain-lion-os-x.html" title="Tutorial: How To Uninstall Mountain Lion OS X" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-h_icQWnkNyE/T0kxoCgTYEI/AAAAAAAAAgw/LqXsGwLo3OQ/s72-c/Screen+Shot+2012-02-25+at+2.04.41+PM.png" height="72" width="72" /><thr:total>11</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2012/02/how-to-uninstall-mountain-lion-os-x.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8HSHYyeSp7ImA9WhRSEks.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-8489817282105744826</id><published>2011-11-11T06:50:00.001-08:00</published><updated>2011-11-14T02:00:39.891-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-14T02:00:39.891-08:00</app:edited><title>It happened again!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
I took a hiatus from writing my blog to get a couple apps into market/testing. My second app just came out.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-lWIEuaoQ6oY/Tr02GwmvhjI/AAAAAAAAAfs/4DdMQri032w/s1600/Photo+Nov+11%252C+9+39+04+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-lWIEuaoQ6oY/Tr02GwmvhjI/AAAAAAAAAfs/4DdMQri032w/s640/Photo+Nov+11%252C+9+39+04+AM.png" width="426" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-FKypYfhTCqo/TsDmnmdk17I/AAAAAAAAAf0/bJznSes6e0M/s1600/Screen+Shot+2011-11-14+at+4.59.16+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="365" src="http://4.bp.blogspot.com/-FKypYfhTCqo/TsDmnmdk17I/AAAAAAAAAf0/bJznSes6e0M/s640/Screen+Shot+2011-11-14+at+4.59.16+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Link:&amp;nbsp;&lt;a href="http://itunes.apple.com/us/app/nsop-2011/id478607694?mt=8"&gt;http://itunes.apple.com/us/app/nsop-2011/id478607694?mt=8&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/Z85-65dh0UY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/8489817282105744826/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=8489817282105744826" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/8489817282105744826?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/8489817282105744826?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/Z85-65dh0UY/it-happened-again.html" title="It happened again!" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-lWIEuaoQ6oY/Tr02GwmvhjI/AAAAAAAAAfs/4DdMQri032w/s72-c/Photo+Nov+11%252C+9+39+04+AM.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/11/it-happened-again.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EMQXkyfip7ImA9WhRSGE4.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-5965725202678948306</id><published>2011-10-30T03:08:00.001-07:00</published><updated>2011-11-20T17:41:20.796-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-20T17:41:20.796-08:00</app:edited><title>Example Project: TedXColumbia Engineering</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-T4-rUF9u-O8/Tq0iBnAIknI/AAAAAAAAAdk/pyCn3AQYKxg/s1600/Screen+Shot+2011-10-30+at+6.04.57+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-T4-rUF9u-O8/Tq0iBnAIknI/AAAAAAAAAdk/pyCn3AQYKxg/s640/Screen+Shot+2011-10-30+at+6.04.57+AM.png" width="436" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Live at: &lt;a href="http://www.tedxcolumbiaengineering.com/"&gt;http://www.tedxcolumbiaengineering.com/&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Funny Story: I stayed in all of Saturday night to work on this website and these girls tried to tempt me to leave the library at 2:30am to go party. How rude! I got some great pics of it.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-85lrLvI2kNc/Tq0jXVq9l9I/AAAAAAAAAd8/li3-k06rmSg/s1600/Photo+Oct+30%252C+2+23+15+AM.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="478" src="http://2.bp.blogspot.com/-85lrLvI2kNc/Tq0jXVq9l9I/AAAAAAAAAd8/li3-k06rmSg/s640/Photo+Oct+30%252C+2+23+15+AM.jpg" width="640" /&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: none; color: black;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-k_-4hW9MJYw/Tq0jWvlK-cI/AAAAAAAAAds/KTUryJwUSTU/s1600/Photo+Oct+30%252C+2+22+50+AM.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-85lrLvI2kNc/Tq0jXVq9l9I/AAAAAAAAAd8/li3-k06rmSg/s1600/Photo+Oct+30%252C+2+23+15+AM.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href="http://4.bp.blogspot.com/-k_-4hW9MJYw/Tq0jWvlK-cI/AAAAAAAAAds/KTUryJwUSTU/s1600/Photo+Oct+30%252C+2+22+50+AM.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-k_-4hW9MJYw/Tq0jWvlK-cI/AAAAAAAAAds/KTUryJwUSTU/s640/Photo+Oct+30%252C+2+22+50+AM.jpg" width="478" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-HknVxx60sc4/Tq0jXDn0QsI/AAAAAAAAAd0/x5bLLEQ3nS8/s640/Photo+Oct+30%252C+2+22+56+AM.jpg" width="478" /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/aPdCHdQ0EbA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/5965725202678948306/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=5965725202678948306" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/5965725202678948306?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/5965725202678948306?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/aPdCHdQ0EbA/example-project-tedxcolumbia.html" title="Example Project: TedXColumbia Engineering" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-T4-rUF9u-O8/Tq0iBnAIknI/AAAAAAAAAdk/pyCn3AQYKxg/s72-c/Screen+Shot+2011-10-30+at+6.04.57+AM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/example-project-tedxcolumbia.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcHRn84fip7ImA9WhdaGUs.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-3553794165132899928</id><published>2011-10-30T02:30:00.001-07:00</published><updated>2011-10-30T02:30:37.136-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-30T02:30:37.136-07:00</app:edited><title>The Perks of Building Websites for Other People (You Get To Write Your Own Bio)</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-W389Qdu6JRo/Tq0ZKzTXAQI/AAAAAAAAAdc/l506_KpyvkM/s1600/web.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="432" src="http://1.bp.blogspot.com/-W389Qdu6JRo/Tq0ZKzTXAQI/AAAAAAAAAdc/l506_KpyvkM/s640/web.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/cFlM8NUrY7k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/3553794165132899928/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=3553794165132899928" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/3553794165132899928?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/3553794165132899928?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/cFlM8NUrY7k/perks-of-building-websites-for-other.html" title="The Perks of Building Websites for Other People (You Get To Write Your Own Bio)" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-W389Qdu6JRo/Tq0ZKzTXAQI/AAAAAAAAAdc/l506_KpyvkM/s72-c/web.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/perks-of-building-websites-for-other.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYFQH0zeyp7ImA9WhdaGEo.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-6045503578113058124</id><published>2011-10-29T00:35:00.000-07:00</published><updated>2011-10-29T00:41:51.383-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-29T00:41:51.383-07:00</app:edited><title>iOS 5 Tutorial: Creating a Custom Tab Bar Controller</title><content type="html">I'm currently revamping an iPhone app that I made for the New Student Orientation Program at Columbia University. The app has this beautiful custom tab bar that my friend designed and so I am re-implementing it for iOS 5.&lt;br /&gt;
&lt;br /&gt;
I literally just spent the last three hours figuring out how to do this so hopefully I can save you all time.&lt;br /&gt;
&lt;br /&gt;
Finished Product:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-YIV7G6cp9gQ/Tqut8RfAb5I/AAAAAAAAAdU/XUmC-fHPoJw/s1600/iOS+Simulator+Screen+shot+Oct+29%252C+2011+3.40.17+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-YIV7G6cp9gQ/Tqut8RfAb5I/AAAAAAAAAdU/XUmC-fHPoJw/s320/iOS+Simulator+Screen+shot+Oct+29%252C+2011+3.40.17+AM.png" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
1. Create a New Tabbed Application.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-RQRO8oPM0Es/TqumEu_qcaI/AAAAAAAAAbI/OlxuDGq1Oag/s1600/Screen+Shot+2011-10-29+at+3.04.46+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="376" src="http://1.bp.blogspot.com/-RQRO8oPM0Es/TqumEu_qcaI/AAAAAAAAAbI/OlxuDGq1Oag/s640/Screen+Shot+2011-10-29+at+3.04.46+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Go to the MainStoryboard file and drag and drop three view controllers and connect them to the tab bar controller.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-UoBP3NgBHg0/TqumU_KXAdI/AAAAAAAAAbQ/wLRImfphTDI/s1600/Screen+Shot+2011-10-29+at+3.05.51+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="374" src="http://3.bp.blogspot.com/-UoBP3NgBHg0/TqumU_KXAdI/AAAAAAAAAbQ/wLRImfphTDI/s640/Screen+Shot+2011-10-29+at+3.05.51+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
When You're Finished You Should Have Five Views Connected Like This:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-QhHvaTzEiSI/Tqum0WwjkGI/AAAAAAAAAbY/uSAp9u52-Kk/s1600/Screen+Shot+2011-10-29+at+3.09.28+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="370" src="http://3.bp.blogspot.com/-QhHvaTzEiSI/Tqum0WwjkGI/AAAAAAAAAbY/uSAp9u52-Kk/s640/Screen+Shot+2011-10-29+at+3.09.28+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Note: Go to the right sidebar and delete the title for each of the toolbar buttons as well. Like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-SglB62SgFYA/TquqohhIJ6I/AAAAAAAAAc8/GSMZ6EVSA3M/s1600/Screen+Shot+2011-10-29+at+3.26.05+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="366" src="http://4.bp.blogspot.com/-SglB62SgFYA/TquqohhIJ6I/AAAAAAAAAc8/GSMZ6EVSA3M/s640/Screen+Shot+2011-10-29+at+3.26.05+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Because this is a tutorial about creating a custom tab bar, it's not necessary to create custom view controllers so I'm just going to use the auto generated FirstViewController.m file to do all of the work.&lt;br /&gt;
&lt;br /&gt;
Download These Images:&amp;nbsp;&lt;a href="http://dl.dropbox.com/u/2127556/tabBarpngImages.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
My friend made these and so you can just download them and add them to your project. All of the images are 64px x 49px since 320px width / 5 = 64 px, and 49 px high because we thought that looked good.&lt;br /&gt;
&lt;br /&gt;
The dark blue is for when the view is selected and the light blue is for when the view is unselected.&lt;br /&gt;
&lt;br /&gt;
Note: The images were hard to format in Blogger hence the mess.&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/-kD8lCVosodA/TqunqMUGEBI/AAAAAAAAAcY/UlAunX1dnPE/s1600/MoreLB.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-kD8lCVosodA/TqunqMUGEBI/AAAAAAAAAcY/UlAunX1dnPE/s1600/MoreLB.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/-eDUEklx1tnc/TqunpZrYq-I/AAAAAAAAAb4/e2aCh4kq-Yg/s1600/HomeLB.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-eDUEklx1tnc/TqunpZrYq-I/AAAAAAAAAb4/e2aCh4kq-Yg/s1600/HomeLB.png" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-9mmiGhZqM9E/TqunqYW2pLI/AAAAAAAAAcg/DsQNe3uBbmA/s1600/ScheduleDB.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-9mmiGhZqM9E/TqunqYW2pLI/AAAAAAAAAcg/DsQNe3uBbmA/s1600/ScheduleDB.png" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-WXWPJSPGN1Q/Tqunp83Af4I/AAAAAAAAAcQ/skNe1t_9B6I/s1600/MoreDB.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-WXWPJSPGN1Q/Tqunp83Af4I/AAAAAAAAAcQ/skNe1t_9B6I/s1600/MoreDB.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-WXWPJSPGN1Q/Tqunp83Af4I/AAAAAAAAAcQ/skNe1t_9B6I/s1600/MoreDB.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-VKEbESt5yx0/Tquno4HjbEI/AAAAAAAAAbg/YgJxaN6bET8/s1600/BuildingsDB.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-VKEbESt5yx0/Tquno4HjbEI/AAAAAAAAAbg/YgJxaN6bET8/s1600/BuildingsDB.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/--2DQ5TOoAes/TqunpiZQsyI/AAAAAAAAAcA/O4SlbhXExhc/s1600/InformationDB.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/--2DQ5TOoAes/TqunpiZQsyI/AAAAAAAAAcA/O4SlbhXExhc/s1600/InformationDB.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://3.bp.blogspot.com/-zr9GSDBNWjE/TqunpPy-EFI/AAAAAAAAAbw/s8o-gNOeBpw/s1600/HomeDB.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-zr9GSDBNWjE/TqunpPy-EFI/AAAAAAAAAbw/s8o-gNOeBpw/s1600/HomeDB.png" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-aOifnXoj4Bo/Tquno3PBCMI/AAAAAAAAAbo/6xGNu0b0ReA/s1600/BuildingsLB.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-aOifnXoj4Bo/Tquno3PBCMI/AAAAAAAAAbo/6xGNu0b0ReA/s1600/BuildingsLB.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-QUT9SM23DLo/TqunpvLegbI/AAAAAAAAAcI/YEV5FbNrj9M/s1600/InformationLB.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-QUT9SM23DLo/TqunpvLegbI/AAAAAAAAAcI/YEV5FbNrj9M/s1600/InformationLB.png" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-EvNx_ZhsR2k/TqunqmfKI_I/AAAAAAAAAco/iKd-tjvqCPY/s1600/ScheduleLB.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-EvNx_ZhsR2k/TqunqmfKI_I/AAAAAAAAAco/iKd-tjvqCPY/s1600/ScheduleLB.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
4. Drag and drop the downloaded images into your project.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;5. Go to the FirstViewController.m file and add the following code below in the viewDidLoad method. The code essentially says that for each tab bar item at the index, when selected set the image to the dark blue image and when the tab bar item is unselected set it to the light blue image.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #181818; font-family: courier; font-size: 13px; line-height: 22px; white-space: pre;"&gt;&lt;script src="http://pastebin.com/embed_js.php?i=rq8MMZKu"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;6. Build and run and you should be good to go.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-zNA6HmH06gU/Tqur7F4M4fI/AAAAAAAAAdE/oAQCqOtmTIM/s1600/Screen+Shot+2011-10-29+at+3.31.25+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-zNA6HmH06gU/Tqur7F4M4fI/AAAAAAAAAdE/oAQCqOtmTIM/s320/Screen+Shot+2011-10-29+at+3.31.25+AM.png" width="175" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-fnikClhHlQo/Tqur-VSfX1I/AAAAAAAAAdM/snanSvzOs0c/s1600/Screen+Shot+2011-10-29+at+3.31.31+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-fnikClhHlQo/Tqur-VSfX1I/AAAAAAAAAdM/snanSvzOs0c/s320/Screen+Shot+2011-10-29+at+3.31.31+AM.png" width="179" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download Project Here:&amp;nbsp;&lt;a href="http://bit.ly/rJ20m9"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/u8gLkEFltnY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/6045503578113058124/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=6045503578113058124" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/6045503578113058124?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/6045503578113058124?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/u8gLkEFltnY/ios-5-tutorial-creating-custom-tab-bar.html" title="iOS 5 Tutorial: Creating a Custom Tab Bar Controller" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-YIV7G6cp9gQ/Tqut8RfAb5I/AAAAAAAAAdU/XUmC-fHPoJw/s72-c/iOS+Simulator+Screen+shot+Oct+29%252C+2011+3.40.17+AM.png" height="72" width="72" /><thr:total>10</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/ios-5-tutorial-creating-custom-tab-bar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QAQnc8fSp7ImA9WhdaGEo.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-1035580175697358239</id><published>2011-10-28T23:55:00.000-07:00</published><updated>2011-10-28T23:55:43.975-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-28T23:55:43.975-07:00</app:edited><title>Mini Project: Creating a Horizontal Slider</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Note: I wanted to create a custom thumbnail slider and I couldn't find a good tutorial on how to do it. I was able to make a mediocre one, and I thought I'd post it here so someone could suggest how I could improve it plus see how I implemented it.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Download Here:&amp;nbsp;&lt;a href="http://dl.dropbox.com/u/2127556/ThumbNailSlider.zip"&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-Y_ZInyzbQWk/Tquij4wFrKI/AAAAAAAAAa4/69Xvl_zLqro/s1600/Photo+Oct+29%252C+2+50+51+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-Y_ZInyzbQWk/Tquij4wFrKI/AAAAAAAAAa4/69Xvl_zLqro/s320/Photo+Oct+29%252C+2+50+51+AM.png" width="213" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-v2OGheaM60w/TquikCc5jOI/AAAAAAAAAbA/aO2KLWh6S7s/s1600/Photo+Oct+29%252C+2+51+03+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-v2OGheaM60w/TquikCc5jOI/AAAAAAAAAbA/aO2KLWh6S7s/s320/Photo+Oct+29%252C+2+51+03+AM.png" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/Z_Jc_qesGhU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/1035580175697358239/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=1035580175697358239" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/1035580175697358239?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/1035580175697358239?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/Z_Jc_qesGhU/mini-project-creating-horizontal-slider.html" title="Mini Project: Creating a Horizontal Slider" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Y_ZInyzbQWk/Tquij4wFrKI/AAAAAAAAAa4/69Xvl_zLqro/s72-c/Photo+Oct+29%252C+2+50+51+AM.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/mini-project-creating-horizontal-slider.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEDRHk9fyp7ImA9WhdaFU4.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-4853874840736953612</id><published>2011-10-25T01:50:00.000-07:00</published><updated>2011-10-25T01:51:15.767-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-25T01:51:15.767-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iOS 5" /><category scheme="http://www.blogger.com/atom/ns#" term="storyboard" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="uitableview" /><title>iOS 5 Storyboard + UITableView Tutorial II (Improved)</title><content type="html">Since I'm learning as well and have been reading other people's tutorials that I thought were not very good (because they either had too much clutter or did not stress the important points) I thought I would make another tutorial on the key ideas of UITableViews that I missed out on before.&lt;br /&gt;
&lt;br /&gt;
Download Project: &lt;a href="http://bit.ly/tEi6Dl"&gt;here&lt;/a&gt;.&lt;br /&gt;
1. Create a new&lt;i&gt; Tabbed Application&lt;/i&gt; called &lt;i&gt;StoryboardUITableView&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-Ut2I_pKvjpQ/TqZquxq-mzI/AAAAAAAAAXw/Ejaw5Tr22oY/s1600/Screen+Shot+2011-10-25+at+3.51.12+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="376" src="http://4.bp.blogspot.com/-Ut2I_pKvjpQ/TqZquxq-mzI/AAAAAAAAAXw/Ejaw5Tr22oY/s640/Screen+Shot+2011-10-25+at+3.51.12+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-fcaCo5RaQeY/TqZqy4KzyhI/AAAAAAAAAX4/Da7T30C1pNM/s1600/Screen+Shot+2011-10-25+at+3.51.27+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="378" src="http://1.bp.blogspot.com/-fcaCo5RaQeY/TqZqy4KzyhI/AAAAAAAAAX4/Da7T30C1pNM/s640/Screen+Shot+2011-10-25+at+3.51.27+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
2. In the MainStoryboard file look at the attribute inspector and you will see the checkbox for Is &lt;i&gt;Initial View Controller&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Common Error: &lt;/b&gt;Not having set an initial view controller. The simulator will popup and then just be in a deadlock and in the output log, it will say something about how your application doesn't not have a root view controller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-VZDBqpBCAmI/TqZq2TiPs4I/AAAAAAAAAYA/d78fleyvZco/s1600/Screen+Shot+2011-10-25+at+3.52.00+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="418" src="http://3.bp.blogspot.com/-VZDBqpBCAmI/TqZq2TiPs4I/AAAAAAAAAYA/d78fleyvZco/s640/Screen+Shot+2011-10-25+at+3.52.00+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
3. Embed a navigation controller in the first view by going to Editor &amp;gt; Embed In &amp;gt; Navigation Controller.&lt;br /&gt;
&lt;br /&gt;
Note: If you delete the connection, and then control+drag from the Tab Bar Controller you will see the following in the image below. You can set the initial scene to be the first view controller by control + dragging as described before and then selecting Relationship - viewControllers. This creates a connection between the Tab Bar Controller and and Navigation Controller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-TVqNgF7sJBk/TqZsGl9TIiI/AAAAAAAAAYI/nkku3lj2AVI/s1600/Screen+Shot+2011-10-25+at+3.56.56+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="416" src="http://4.bp.blogspot.com/-TVqNgF7sJBk/TqZsGl9TIiI/AAAAAAAAAYI/nkku3lj2AVI/s640/Screen+Shot+2011-10-25+at+3.56.56+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Suppose I create a tableview by drag and dropping it a &lt;i&gt;UITableViewController&lt;/i&gt;, I can customize the cells in the right panel.&lt;br /&gt;
&lt;br /&gt;
Key Points:&lt;br /&gt;
&lt;br /&gt;
Style: Change Style of UITableViewCell&lt;br /&gt;
Identifier: Cell Identifier to Distinguish Prototype Cells&lt;br /&gt;
Accessory: The Creates The Right Facing Arrow&lt;br /&gt;
Size: Resize the cell by dragging it up or down.&lt;br /&gt;
&lt;br /&gt;
Note: Ignore the left half of the screenshot since I made an error the first time.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-4TamGj622Jw/TqZtoib_HlI/AAAAAAAAAYQ/wsRBkDULryw/s1600/Screen+Shot+2011-10-25+at+4.04.31+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="418" src="http://2.bp.blogspot.com/-4TamGj622Jw/TqZtoib_HlI/AAAAAAAAAYQ/wsRBkDULryw/s640/Screen+Shot+2011-10-25+at+4.04.31+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
5. Create a new UITableViewController called&amp;nbsp;&lt;i&gt;AlbumViewController&amp;nbsp;&lt;/i&gt;and select&amp;nbsp;the table view controller and change its class to &lt;i&gt;AlbumViewController &lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-ZQKiKL2ZE3g/TqZ3JV9o-hI/AAAAAAAAAY4/N-92MwTnPms/s1600/Screen+Shot+2011-10-25+at+4.45.12+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="374" src="http://1.bp.blogspot.com/-ZQKiKL2ZE3g/TqZ3JV9o-hI/AAAAAAAAAY4/N-92MwTnPms/s640/Screen+Shot+2011-10-25+at+4.45.12+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-s-50ZwfMDfw/TqZvP__MLKI/AAAAAAAAAYY/-FWQRTED5Ps/s1600/Screen+Shot+2011-10-25+at+4.11.28+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-s-50ZwfMDfw/TqZvP__MLKI/AAAAAAAAAYY/-FWQRTED5Ps/s320/Screen+Shot+2011-10-25+at+4.11.28+AM.png" width="191" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
6. Suppose I created a datasource in the &lt;i&gt;AppDelegate.m&lt;/i&gt; file and I follow the usual steps to populate the tableview. The one interesting change is here: tableview cells are now automatically allocated so the code is much simpler than before. In the &lt;i&gt;AlbumViewController.m &lt;/i&gt;file implement the usual methods.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;(Note: Copy and paste them from the source file in the download.)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-tEzIL-vjFKE/TqZy5Y-ojVI/AAAAAAAAAYg/gvHMAKzM8yM/s1600/Screen+Shot+2011-10-25+at+4.25.36+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="156" src="http://4.bp.blogspot.com/-tEzIL-vjFKE/TqZy5Y-ojVI/AAAAAAAAAYg/gvHMAKzM8yM/s640/Screen+Shot+2011-10-25+at+4.25.36+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
7. Change this method and you can then slide to delete a tableview cell.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-sST0t_xfPfI/TqZ1AqrSVnI/AAAAAAAAAYw/AKTSv46Stx4/s1600/Screen+Shot+2011-10-25+at+4.35.42+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" src="http://2.bp.blogspot.com/-sST0t_xfPfI/TqZ1AqrSVnI/AAAAAAAAAYw/AKTSv46Stx4/s640/Screen+Shot+2011-10-25+at+4.35.42+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Run and project and it will turn out like this.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-rsdn0WdjdP8/TqZ0WjYiN9I/AAAAAAAAAYo/kQ3l1vamO7E/s1600/Screen+Shot+2011-10-25+at+4.32.51+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-rsdn0WdjdP8/TqZ0WjYiN9I/AAAAAAAAAYo/kQ3l1vamO7E/s640/Screen+Shot+2011-10-25+at+4.32.51+AM.png" width="328" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Download Project: &lt;a href="http://bit.ly/tEi6Dl"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/YhxkdpJDoKE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/4853874840736953612/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=4853874840736953612" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/4853874840736953612?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/4853874840736953612?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/YhxkdpJDoKE/ios-5-storyboard-uitableview-tutorial.html" title="iOS 5 Storyboard + UITableView Tutorial II (Improved)" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-Ut2I_pKvjpQ/TqZquxq-mzI/AAAAAAAAAXw/Ejaw5Tr22oY/s72-c/Screen+Shot+2011-10-25+at+3.51.12+AM.png" height="72" width="72" /><thr:total>8</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/ios-5-storyboard-uitableview-tutorial.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEHR3s7fyp7ImA9WhdaFUw.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-6225146609936991747</id><published>2011-10-24T21:31:00.000-07:00</published><updated>2011-10-24T21:40:36.507-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-24T21:40:36.507-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iOS 5" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter integration" /><category scheme="http://www.blogger.com/atom/ns#" term="Twitter Framework" /><title>Example Project: Creating a TwitPic Replacement with the Twitter Framework in iOS 5</title><content type="html">I was doing research into different Twitter iPhone apps to determine what people liked about each one and I stumbled upon (and purchased) the TwitPic app. I realized that you can easily create a similar app using the Twitter Framework in iOS 5. I don't have time for a step-by-step tutorial right now, but I provided the entire project for download &lt;a href="http://bit.ly/uWiPCP"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-iffEeVmGaj0/TqY5RAnYk4I/AAAAAAAAAW4/OUjStjixnCw/s1600/Photo+Oct+25%252C+12+12+28+AM.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: none; clear: left; color: black; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-iffEeVmGaj0/TqY5RAnYk4I/AAAAAAAAAW4/OUjStjixnCw/s400/Photo+Oct+25%252C+12+12+28+AM.png" width="266" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-iffEeVmGaj0/TqY5RAnYk4I/AAAAAAAAAW4/OUjStjixnCw/s1600/Photo+Oct+25%252C+12+12+28+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-W0sqWqsmB94/TqY5QkSPxBI/AAAAAAAAAWw/UsZdzcJs9fo/s1600/Photo+Oct+25%252C+12+12+23+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-W0sqWqsmB94/TqY5QkSPxBI/AAAAAAAAAWw/UsZdzcJs9fo/s400/Photo+Oct+25%252C+12+12+23+AM.png" width="265" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-k11JRwi-xvI/TqY5R4WiedI/AAAAAAAAAXA/4GVvjiV7dcc/s1600/Photo+Oct+25%252C+12+12+53+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-k11JRwi-xvI/TqY5R4WiedI/AAAAAAAAAXA/4GVvjiV7dcc/s400/Photo+Oct+25%252C+12+12+53+AM.png" width="266" /&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: none; color: black;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-MXTtaSCCybw/TqY5U1s7_-I/AAAAAAAAAXI/MxNYV1sq2dU/s1600/Photo+Oct+25%252C+12+13+09+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-MXTtaSCCybw/TqY5U1s7_-I/AAAAAAAAAXI/MxNYV1sq2dU/s400/Photo+Oct+25%252C+12+13+09+AM.png" width="266" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-B44n1jgY1xU/TqY5aDyhXDI/AAAAAAAAAXQ/ABmQvkKpk5M/s1600/Photo+Oct+25%252C+12+13+15+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-B44n1jgY1xU/TqY5aDyhXDI/AAAAAAAAAXQ/ABmQvkKpk5M/s400/Photo+Oct+25%252C+12+13+15+AM.png" width="266" /&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: none; color: black;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-C4tlBlWLuxA/TqY5awEjd7I/AAAAAAAAAXY/4tyNO2Pw5UE/s1600/Photo+Oct+25%252C+12+14+20+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-C4tlBlWLuxA/TqY5awEjd7I/AAAAAAAAAXY/4tyNO2Pw5UE/s400/Photo+Oct+25%252C+12+14+20+AM.png" width="266" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-03_9U9isHM8/TqY5b6LMNNI/AAAAAAAAAXo/u2MWrh8JAh4/s1600/Photo+Oct+25%252C+12+15+51+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-03_9U9isHM8/TqY5b6LMNNI/AAAAAAAAAXo/u2MWrh8JAh4/s400/Photo+Oct+25%252C+12+15+51+AM.png" width="266" /&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: none; color: black;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-L0rBuvpRhU0/TqY5bF_YZWI/AAAAAAAAAXg/BQlk1D3kPEY/s1600/Photo+Oct+25%252C+12+15+44+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-L0rBuvpRhU0/TqY5bF_YZWI/AAAAAAAAAXg/BQlk1D3kPEY/s400/Photo+Oct+25%252C+12+15+44+AM.png" width="266" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Project Available to Download: &lt;a href="http://bit.ly/uWiPCP"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Note: I do not own any of the Twitter pictures and I am in no way affiliated with Twitter.&lt;br /&gt;
&lt;br /&gt;
Note: The project isn't "finished" yet, but it's a good starting point.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/TVHUDOag4YM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/6225146609936991747/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=6225146609936991747" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/6225146609936991747?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/6225146609936991747?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/TVHUDOag4YM/example-project-creating-twitpic.html" title="Example Project: Creating a TwitPic Replacement with the Twitter Framework in iOS 5" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-iffEeVmGaj0/TqY5RAnYk4I/AAAAAAAAAW4/OUjStjixnCw/s72-c/Photo+Oct+25%252C+12+12+28+AM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/example-project-creating-twitpic.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQERHo8eip7ImA9WhdaFUw.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-5308445841415573019</id><published>2011-10-24T03:28:00.000-07:00</published><updated>2011-10-24T21:35:05.472-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-24T21:35:05.472-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iOS 5" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter integration" /><category scheme="http://www.blogger.com/atom/ns#" term="Twitter Framework" /><title>Example Project: Using iOS 5 Twitter API to Find Foursquare Checkins (Unfinished)</title><content type="html">Download Project:&amp;nbsp;&lt;a href="http://bit.ly/sQqz29"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;a href="http://4.bp.blogspot.com/-nukD28RjVkQ/TqUSuoXB27I/AAAAAAAAAWo/yI9zSTpzLUo/s1600/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.55+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-6rdxvsJCk3k/TqUSuUaDLBI/AAAAAAAAAWg/XFNZ07LAf0E/s1600/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.49+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-23iBD_5vUGA/TqUSskmNxnI/AAAAAAAAAWQ/CanEAFEOGZQ/s1600/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.38+AM.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-23iBD_5vUGA/TqUSskmNxnI/AAAAAAAAAWQ/CanEAFEOGZQ/s1600/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.38+AM.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-B3H9hqmyTQY/TqUSs2VgNjI/AAAAAAAAAWY/7f7JwGSb_7Y/s1600/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.43+AM.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-B3H9hqmyTQY/TqUSs2VgNjI/AAAAAAAAAWY/7f7JwGSb_7Y/s400/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.43+AM.png" width="266" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-23iBD_5vUGA/TqUSskmNxnI/AAAAAAAAAWQ/CanEAFEOGZQ/s1600/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.38+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-23iBD_5vUGA/TqUSskmNxnI/AAAAAAAAAWQ/CanEAFEOGZQ/s400/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.38+AM.png" width="266" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-nukD28RjVkQ/TqUSuoXB27I/AAAAAAAAAWo/yI9zSTpzLUo/s1600/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.55+AM.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-nukD28RjVkQ/TqUSuoXB27I/AAAAAAAAAWo/yI9zSTpzLUo/s400/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.55+AM.png" width="266" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://4.bp.blogspot.com/-6rdxvsJCk3k/TqUSuUaDLBI/AAAAAAAAAWg/XFNZ07LAf0E/s1600/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.49+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-6rdxvsJCk3k/TqUSuUaDLBI/AAAAAAAAAWg/XFNZ07LAf0E/s400/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.49+AM.png" width="265" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/OsfdDI4NFmQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/5308445841415573019/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=5308445841415573019" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/5308445841415573019?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/5308445841415573019?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/OsfdDI4NFmQ/example-project-using-twitter-api-to.html" title="Example Project: Using iOS 5 Twitter API to Find Foursquare Checkins (Unfinished)" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-B3H9hqmyTQY/TqUSs2VgNjI/AAAAAAAAAWY/7f7JwGSb_7Y/s72-c/iOS+Simulator+Screen+shot+Oct+24%252C+2011+3.22.43+AM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/example-project-using-twitter-api-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQDQXoycCp7ImA9WhdaFUw.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-1415227892422652276</id><published>2011-10-23T23:03:00.000-07:00</published><updated>2011-10-24T21:36:10.498-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-24T21:36:10.498-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Instagram" /><category scheme="http://www.blogger.com/atom/ns#" term="HTML5" /><title>Example Project: Instagram Slideshow with HTML5</title><content type="html">&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px;"&gt;&lt;iframe src="http://www.columbia.edu/~klt2127/coverflow/" style="height: 500px; width: 700px;"&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
1. Download the coverflow example code from the HTML5 Rocks:&amp;nbsp;&lt;a href="http://studio.html5rocks.com/#Carousel"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
2. Go to http://searchinstagram.com/ and enter search term.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-edBBzQu-Ziw/TqT1Y-q9mmI/AAAAAAAAAVg/5IghJZy85Hs/s1600/Screen+Shot+2011-10-24+at+1.19.15+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="364" src="http://4.bp.blogspot.com/-edBBzQu-Ziw/TqT1Y-q9mmI/AAAAAAAAAVg/5IghJZy85Hs/s640/Screen+Shot+2011-10-24+at+1.19.15+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
3. Use a web inspector in your favorite browser and find and download the images that you like. I'm using the web inspector in Safari.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-psd3j6zqn6k/TqT1ysT8QQI/AAAAAAAAAVo/LrN7XFE9et0/s1600/Screen+Shot+2011-10-24+at+1.20.16+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="412" src="http://1.bp.blogspot.com/-psd3j6zqn6k/TqT1ysT8QQI/AAAAAAAAAVo/LrN7XFE9et0/s640/Screen+Shot+2011-10-24+at+1.20.16+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
4. Open up a terminal window and go to the directory where you placed the downloaded overflow sample code and find the url of the images you like from Safari and use the curl command to download those images. (The &lt;i&gt;image_link&lt;/i&gt; is next the &lt;i&gt;URL&lt;/i&gt;)&lt;br /&gt;
Syntax: "curl -O &lt;i&gt;image_link&lt;/i&gt;"&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-rGpNysq_gWk/TqT2fbnH10I/AAAAAAAAAVw/H0ns4UxZx70/s1600/Screen+Shot+2011-10-24+at+1.23.50+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-rGpNysq_gWk/TqT2fbnH10I/AAAAAAAAAVw/H0ns4UxZx70/s640/Screen+Shot+2011-10-24+at+1.23.50+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Download all of your favorite pictures.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-ntS0zZTknWc/TqT5oUZN9XI/AAAAAAAAAV4/gp1PctnIQp4/s1600/Screen+Shot+2011-10-24+at+1.37.17+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="414" src="http://1.bp.blogspot.com/-ntS0zZTknWc/TqT5oUZN9XI/AAAAAAAAAV4/gp1PctnIQp4/s640/Screen+Shot+2011-10-24+at+1.37.17+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
6. &amp;nbsp;Change the names of the images to something more intuitive. I names mine one, two, three,..., etc. In the index.html file change the image urls accordingly and you're all set.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-78kHXiw7afo/TqT-kCNDftI/AAAAAAAAAWA/yVjpIOW-wdY/s1600/Screen+Shot+2011-10-24+at+1.57.48+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="282" src="http://2.bp.blogspot.com/-78kHXiw7afo/TqT-kCNDftI/AAAAAAAAAWA/yVjpIOW-wdY/s640/Screen+Shot+2011-10-24+at+1.57.48+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;Finished Product:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-S5XPDN8Tisk/TqT-97bhUsI/AAAAAAAAAWI/AJl_RRBeFrc/s1600/Screen+Shot+2011-10-24+at+1.59.23+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="408" src="http://1.bp.blogspot.com/-S5XPDN8Tisk/TqT-97bhUsI/AAAAAAAAAWI/AJl_RRBeFrc/s640/Screen+Shot+2011-10-24+at+1.59.23+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Download Project:&amp;nbsp;&lt;a href="http://bit.ly/uKm3F0"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/x2GTXyRF9EA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/1415227892422652276/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=1415227892422652276" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/1415227892422652276?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/1415227892422652276?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/x2GTXyRF9EA/example-project-instagram-slideshow.html" title="Example Project: Instagram Slideshow with HTML5" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-edBBzQu-Ziw/TqT1Y-q9mmI/AAAAAAAAAVg/5IghJZy85Hs/s72-c/Screen+Shot+2011-10-24+at+1.19.15+AM.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/example-project-instagram-slideshow.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4ERXw_eyp7ImA9WhRTEEQ.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-882709949081621157</id><published>2011-10-23T18:09:00.000-07:00</published><updated>2011-10-31T15:08:24.243-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-31T15:08:24.243-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iOS 5" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter integration" /><category scheme="http://www.blogger.com/atom/ns#" term="Twitter Framework" /><title>iOS 5 Tweeting Apple Sample Code (Errors?) + How to Parse JSON With NSJSONSerialization</title><content type="html">&amp;nbsp; &amp;nbsp; &amp;nbsp;I was planning on creating an extensive tutorial a couple weeks ago on how to use the Twitter API in iOS 5, but I was running into errors and I thought I would tell you what my errors were and how I resolved them.&lt;br /&gt;
&lt;br /&gt;
Apple Sample Code:&amp;nbsp;&lt;a href="http://developer.apple.com/library/ios/#samplecode/Tweeting/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011191-Intro-DontLinkElementID_2"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
1. I downloaded the &lt;i&gt;Tweeting&lt;/i&gt; Apple sample code and ran the package and noticed they had an example on how to download public timelines in JSON format using the new &lt;i&gt;TWRequest&lt;/i&gt; class.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-4KBczIIq-i0/TqSxFWpIEjI/AAAAAAAAAUw/AuSwGn5jvWU/s1600/Screen+Shot+2011-10-23+at+8.26.40+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="376" src="http://1.bp.blogspot.com/-4KBczIIq-i0/TqSxFWpIEjI/AAAAAAAAAUw/AuSwGn5jvWU/s640/Screen+Shot+2011-10-23+at+8.26.40+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
2. In the sample code they used the NSJSONSerialization to create the &lt;i&gt;publicTimeline&lt;/i&gt; NSDictionary. I tried to create a new array NSArray *keys = [publicTimeline allKeys]; and the program would crash.&lt;br /&gt;
&lt;br /&gt;
This is the error:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-XI16duKsHus/TqS3k6giSYI/AAAAAAAAAVA/1IG_2Fcgw38/s1600/Screen+Shot+2011-10-23+at+8.55.20+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://3.bp.blogspot.com/-XI16duKsHus/TqS3k6giSYI/AAAAAAAAAVA/1IG_2Fcgw38/s640/Screen+Shot+2011-10-23+at+8.55.20+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-sSM-MGtjad4/TqS2-YuyZGI/AAAAAAAAAU4/xJjJC3r4JCQ/s1600/Screen+Shot+2011-10-23+at+8.52.53+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="376" src="http://1.bp.blogspot.com/-sSM-MGtjad4/TqS2-YuyZGI/AAAAAAAAAU4/xJjJC3r4JCQ/s640/Screen+Shot+2011-10-23+at+8.52.53+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Naturally, the first thing I did was ask my friend who works at Apple (comparative advantage) and he really didn't know what was going on so I was stuck and trying different things for about a week. I then did some searching and reading in forums and someone was having a similar error with NSMutableArrays being converted into NSCFArrays and then someone on stack overflow suggested creating a new array with an array and it sparked an idea for me to do the same.&lt;br /&gt;
&lt;br /&gt;
Note: I searched the Apple Developer Forums as well and I couldn't find a solution so I thought I should post it here.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-_C2OYZF_2y0/TqS4cNeVCDI/AAAAAAAAAVI/t2LjP8jl7CQ/s1600/Screen+Shot+2011-10-23+at+8.58.13+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="468" src="http://3.bp.blogspot.com/-_C2OYZF_2y0/TqS4cNeVCDI/AAAAAAAAAVI/t2LjP8jl7CQ/s640/Screen+Shot+2011-10-23+at+8.58.13+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
4. Anyways, long story short I figured out how to do it. Just create an array with the publicTimeline NSDictionary. Each object in the NSArray is an NSDictionary of statuses and using the key "text" you can retrieve the text of each tweet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-9FHwdN7Zo-Q/TqS4ykUe5zI/AAAAAAAAAVQ/40ycBNpyiwY/s1600/Screen+Shot+2011-10-23+at+9.00.43+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="390" src="http://2.bp.blogspot.com/-9FHwdN7Zo-Q/TqS4ykUe5zI/AAAAAAAAAVQ/40ycBNpyiwY/s640/Screen+Shot+2011-10-23+at+9.00.43+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-PKci-7SnhEY/TqS5IlTcb6I/AAAAAAAAAVY/0LLjrLma8J8/s1600/Screen+Shot+2011-10-23+at+9.02.08+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="372" src="http://3.bp.blogspot.com/-PKci-7SnhEY/TqS5IlTcb6I/AAAAAAAAAVY/0LLjrLma8J8/s640/Screen+Shot+2011-10-23+at+9.02.08+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I have to finish this post later since I have midterms this week... &amp;nbsp;In the meantime you can download the project below.&lt;br /&gt;
&lt;br /&gt;
Full Project Here:&amp;nbsp;&lt;a href="http://dl.dropbox.com/u/2127556/Tweeting.zip"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Correction: What you can do is just create an array initially.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-HSZp_qiRipQ/Tq8b8Lv2-QI/AAAAAAAAAek/6n3yv4VuwbI/s1600/Screen+Shot+2011-10-31+at+6.04.56+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="390" src="http://1.bp.blogspot.com/-HSZp_qiRipQ/Tq8b8Lv2-QI/AAAAAAAAAek/6n3yv4VuwbI/s640/Screen+Shot+2011-10-31+at+6.04.56+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-ZSIRgW2NKs4/Tq8b_Wpbw-I/AAAAAAAAAes/XWhX0aqMmnI/s1600/Screen+Shot+2011-10-31+at+6.05.32+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="398" src="http://1.bp.blogspot.com/-ZSIRgW2NKs4/Tq8b_Wpbw-I/AAAAAAAAAes/XWhX0aqMmnI/s640/Screen+Shot+2011-10-31+at+6.05.32+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/bV8sTGO1p_M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/882709949081621157/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=882709949081621157" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/882709949081621157?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/882709949081621157?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/bV8sTGO1p_M/ios-5-tweeting-apple-sample-code-errors.html" title="iOS 5 Tweeting Apple Sample Code (Errors?) + How to Parse JSON With NSJSONSerialization" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-4KBczIIq-i0/TqSxFWpIEjI/AAAAAAAAAUw/AuSwGn5jvWU/s72-c/Screen+Shot+2011-10-23+at+8.26.40+PM.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/ios-5-tweeting-apple-sample-code-errors.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UHRX0_fyp7ImA9WhdaEU4.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-2667852974335083327</id><published>2011-10-19T22:57:00.000-07:00</published><updated>2011-10-20T10:20:34.347-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-20T10:20:34.347-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iOS 5" /><category scheme="http://www.blogger.com/atom/ns#" term="storyboard" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="uitableview" /><title>iOS 5 Storyboard and UITableViews Tutorial</title><content type="html">In this tutorial we will:&lt;br /&gt;
&lt;br /&gt;
1. Create a UITableView from scratch.&lt;br /&gt;
2. Learn about navigation controllers.&lt;br /&gt;
3. Pushing view controllers with storyboard.&lt;br /&gt;
&lt;br /&gt;
Link to Download Entire Project:&amp;nbsp;&lt;a href="http://dl.dropbox.com/u/2127556/StoryboardTutorial.zip"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
1. Create a new single view based application called "StoryboardTutorial".&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-TrH8f_PUS7w/Tp-g-vhrWmI/AAAAAAAAARU/hteRYoUvEMs/s1600/Screen+Shot+2011-10-20+at+12.12.44+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="435" src="http://2.bp.blogspot.com/-TrH8f_PUS7w/Tp-g-vhrWmI/AAAAAAAAARU/hteRYoUvEMs/s640/Screen+Shot+2011-10-20+at+12.12.44+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
2. Select the main storyboard file and then select Editor &amp;gt; Embed In &amp;gt; Navigation Controller.&lt;br /&gt;
Note: A navigation controller is a way to manage views. Typically you push or pop a view onto a navigation controller. You can think of this a stack.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-9WZN_1u1Mto/Tp-hHj-P7AI/AAAAAAAAARc/PicNlk0KT3Y/s1600/Screen+Shot+2011-10-20+at+12.18.23+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="390" src="http://4.bp.blogspot.com/-9WZN_1u1Mto/Tp-hHj-P7AI/AAAAAAAAARc/PicNlk0KT3Y/s640/Screen+Shot+2011-10-20+at+12.18.23+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
3. Next drag and drop a UITableView from the right sidebar and place it onto the view controller.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-ldA6DqJ-Ye4/Tp-hneIsX_I/AAAAAAAAARk/ghTzEbf1iWQ/s1600/Screen+Shot+2011-10-20+at+12.20.21+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="346" src="http://3.bp.blogspot.com/-ldA6DqJ-Ye4/Tp-hneIsX_I/AAAAAAAAARk/ghTzEbf1iWQ/s640/Screen+Shot+2011-10-20+at+12.20.21+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
4. Go into the ViewController.h file and add &lt;uitableviewdelegate, uitableviewdatasource=""&gt; after it says UIViewController. This tells the compiler that your class will conform to the UITableViewDelegate/UITableViewDataSource protocols. A protocol is just a formal way of saying that you will implement all methods that are required so you have a functioning tableview.&amp;nbsp;&lt;/uitableviewdelegate,&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-jh7JMZFyCtY/Tp-kj-TcGOI/AAAAAAAAARs/hFQkOpigtsg/s1600/Screen+Shot+2011-10-20+at+12.30.57+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="44" src="http://1.bp.blogspot.com/-jh7JMZFyCtY/Tp-kj-TcGOI/AAAAAAAAARs/hFQkOpigtsg/s640/Screen+Shot+2011-10-20+at+12.30.57+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: The biggest benefit of declaring the ViewController.h object as such is that now Xcode will autogenerate code and most of your necessary methods you would like to implement in the tableview class. Also note, if the method is not auto-generating you're probably doing something wrong. That's the main way I know I'm doing something wrong, or the program crashes.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-hgc817UDRAk/Tp-lH1b3C6I/AAAAAAAAAR0/CFVLRZWoBc8/s1600/Screen+Shot+2011-10-20+at+12.30.20+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="344" src="http://4.bp.blogspot.com/-hgc817UDRAk/Tp-lH1b3C6I/AAAAAAAAAR0/CFVLRZWoBc8/s640/Screen+Shot+2011-10-20+at+12.30.20+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Go back to the main storyboard file and "Control + Drag" from the tableview to the view controller and select "data source" and "delegate". This is how you tell the tableview where it is going to get it's data from, and if an event (a touch event for example) happens, who should it notify.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-VMmRC05YSbk/Tp-mpUdseWI/AAAAAAAAAR8/czkE10vWkCA/s1600/Screen+Shot+2011-10-20+at+12.37.46+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="348" src="http://4.bp.blogspot.com/-VMmRC05YSbk/Tp-mpUdseWI/AAAAAAAAAR8/czkE10vWkCA/s640/Screen+Shot+2011-10-20+at+12.37.46+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
6. Now click on a tableview cell and click on the right side bar and go to the fourth panel from the left. In the field Identifier type "Cell". This is label so that you can reuse tableview cells which saves memory.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-VWJPPHNd1Xo/Tp-nEraIBbI/AAAAAAAAASE/O6teqWjZoQI/s1600/Screen+Shot+2011-10-20+at+12.40.07+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="344" src="http://3.bp.blogspot.com/-VWJPPHNd1Xo/Tp-nEraIBbI/AAAAAAAAASE/O6teqWjZoQI/s640/Screen+Shot+2011-10-20+at+12.40.07+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
7. In the ViewController.m file implement these protocol methods.&lt;br /&gt;
Note: Philosophically it would make sense that you would needs to implement these methods to have create an actually tableview. You need to know 1) how many rows should you have and 2) what should you label these rows and 3) what to do when a user clicks on it.&lt;br /&gt;
&lt;br /&gt;
Debugging Tip: Manually label the cells at first to make sure you made your connections correctly. I once spent three hours of my life trying to figure out why my tableview was empty. Save yourself the misery.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-J7yXSLhniYk/Tp-nycx6V2I/AAAAAAAAASM/YEi_Dw--ORY/s1600/Screen+Shot+2011-10-20+at+12.46.21+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://2.bp.blogspot.com/-J7yXSLhniYk/Tp-nycx6V2I/AAAAAAAAASM/YEi_Dw--ORY/s640/Screen+Shot+2011-10-20+at+12.46.21+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-n8EJuYrAZUg/Tp-oeKDpThI/AAAAAAAAASU/8ruFsFo7q9g/s1600/Screen+Shot+2011-10-20+at+12.49.46+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-n8EJuYrAZUg/Tp-oeKDpThI/AAAAAAAAASU/8ruFsFo7q9g/s320/Screen+Shot+2011-10-20+at+12.49.46+AM.png" width="167" /&gt;&lt;/a&gt;&lt;/div&gt;
After you implement those methods it should look like this. I changed the table to states because I wanted to later show how to alphabetize a list of states.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Go back to the main storyboard file and drag and drop a View Controller object, and in the right panel type "detail" and the Identifier. This will be the detail view controller to push another view onto the view controller.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Jx82UXdKRRY/Tp-p1y-kYMI/AAAAAAAAASc/s7YUbLlds4M/s1600/Screen+Shot+2011-10-20+at+12.53.39+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="314" src="http://1.bp.blogspot.com/-Jx82UXdKRRY/Tp-p1y-kYMI/AAAAAAAAASc/s7YUbLlds4M/s640/Screen+Shot+2011-10-20+at+12.53.39+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
9. Go to File &amp;gt; New File &amp;gt; UIViewController Subclass and then create a UIViewController subclass called "DetailViewController" and unselect use XIB for interface.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-YbKkwrkdngo/Tp-qdBKkJ7I/AAAAAAAAASk/cynHs-eF-JA/s1600/Screen+Shot+2011-10-20+at+12.57.15+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="314" src="http://1.bp.blogspot.com/-YbKkwrkdngo/Tp-qdBKkJ7I/AAAAAAAAASk/cynHs-eF-JA/s640/Screen+Shot+2011-10-20+at+12.57.15+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Go back to the main storyboard file and in the right panel change the class of your newest view controller to be the "DetailViewController" that you just created.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-n-MAs1WmcI4/Tp-rH_2D_CI/AAAAAAAAASs/jimRG2BUTlg/s1600/Screen+Shot+2011-10-20+at+12.58.57+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" src="http://1.bp.blogspot.com/-n-MAs1WmcI4/Tp-rH_2D_CI/AAAAAAAAASs/jimRG2BUTlg/s640/Screen+Shot+2011-10-20+at+12.58.57+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
11. Now go back to the ViewController.h file and then add "#import DetailViewController.h" at the top of your file. Then edit the two methods like below.&lt;br /&gt;
&lt;br /&gt;
Note: What's new in iOS 5 is the storyboard and transitioning from one view to the other. Instead of having lots of Xib files, you replace them with views all placed into one storyboard file. This makes life much easier for the developer. So seen below is how you create a view controller object in storyboard.&lt;br /&gt;
"[self.storyboard instantiateViewControllerWithIdentifier:@"detail"" tells the computer to create the view that I called "detail" in the storyboard file, and then the "[self.navigationController pushViewController:detail animated:YES]" then pushes the view onto the view stack, so the visible view is then the current view.&lt;br /&gt;
&lt;br /&gt;
Note: The tableview height method is self-explanatory. For some reason I had a hard time finding that method when I first started so I thought I would include it here for people to play with.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-uBrbCWEYHdc/Tp-tCgUGXaI/AAAAAAAAAS0/U6IirQtIO6A/s1600/Screen+Shot+2011-10-20+at+1.08.36+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="172" src="http://3.bp.blogspot.com/-uBrbCWEYHdc/Tp-tCgUGXaI/AAAAAAAAAS0/U6IirQtIO6A/s640/Screen+Shot+2011-10-20+at+1.08.36+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If everything is working correctly you should see these two screens if you select onto a tableview cell.&lt;br /&gt;
&lt;br /&gt;
Note: In keeping with the states them I added two label to the detail view to work with later on.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-smzluUfppRM/Tp-uYEbXcDI/AAAAAAAAAS8/mOJvMhdk7m4/s1600/Screen+Shot+2011-10-20+at+1.14.45+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-smzluUfppRM/Tp-uYEbXcDI/AAAAAAAAAS8/mOJvMhdk7m4/s320/Screen+Shot+2011-10-20+at+1.14.45+AM.png" width="165" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-C-nh8CIL-Ng/Tp-uYW06Q2I/AAAAAAAAATE/mYIy2mfqEzo/s1600/Screen+Shot+2011-10-20+at+1.14.53+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-C-nh8CIL-Ng/Tp-uYW06Q2I/AAAAAAAAATE/mYIy2mfqEzo/s320/Screen+Shot+2011-10-20+at+1.14.53+AM.png" width="167" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
12. Now if you can add a background image to the tableview cell by editing the cellForRowAtIndexPath method. Here I have a 320x65 pixel image called "LightGrey.png" which I'll include in the project at the end of the tutorial. Adding a background image really adds vibrance to your tableview.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-jWSwNN2LbRk/Tp-wKvve_xI/AAAAAAAAATM/F0Klwia0ecM/s1600/Screen+Shot+2011-10-20+at+1.22.00+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://1.bp.blogspot.com/-jWSwNN2LbRk/Tp-wKvve_xI/AAAAAAAAATM/F0Klwia0ecM/s640/Screen+Shot+2011-10-20+at+1.22.00+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-19XYd6ZV8ZU/Tp-wlWu8zCI/AAAAAAAAATU/2GQ6y1zHUzc/s1600/Screen+Shot+2011-10-20+at+1.24.23+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-19XYd6ZV8ZU/Tp-wlWu8zCI/AAAAAAAAATU/2GQ6y1zHUzc/s400/Screen+Shot+2011-10-20+at+1.24.23+AM.png" width="211" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
13. Create a datasource by editing your ViewController.h and ViewController.m files so they match the ones below.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/-pVVKInNu-og/Tp-zJbhZrYI/AAAAAAAAATc/wCkMCTo8DmI/s1600/Screen+Shot+2011-10-20+at+1.34.14+AM.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-pVVKInNu-og/Tp-zJbhZrYI/AAAAAAAAATc/wCkMCTo8DmI/s640/Screen+Shot+2011-10-20+at+1.34.14+AM.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then make these changes in the ViewController.m file:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-QYEf5Y2_02E/Tp-zkM3OZ5I/AAAAAAAAATk/eVB0PmuRnno/s1600/Screen+Shot+2011-10-20+at+1.34.36+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-QYEf5Y2_02E/Tp-zkM3OZ5I/AAAAAAAAATk/eVB0PmuRnno/s640/Screen+Shot+2011-10-20+at+1.34.36+AM.png" width="586" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes:&lt;br /&gt;
1) @synthesize states and datasource.&lt;br /&gt;
2) In the viewDidLoad method call the function setupArray;&lt;br /&gt;
3) Create the datasource in setupArray;&lt;br /&gt;
4) Change the text label so that it reads from the datasource.&lt;br /&gt;
&lt;br /&gt;
14. Edit the DetailViewController.h file so it matches the one below.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-z7a8yzzyR7Y/Tp-0UgPAzMI/AAAAAAAAATs/lkdJmPn5Z5w/s1600/Screen+Shot+2011-10-20+at+1.39.49+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" src="http://4.bp.blogspot.com/-z7a8yzzyR7Y/Tp-0UgPAzMI/AAAAAAAAATs/lkdJmPn5Z5w/s400/Screen+Shot+2011-10-20+at+1.39.49+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Then @synthesize them at the top of the DetailViewController.m file.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-r8zRwbmc2N0/Tp-0j0jmxbI/AAAAAAAAAT0/6i0corWpY-A/s1600/Screen+Shot+2011-10-20+at+1.41.01+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="115" src="http://3.bp.blogspot.com/-r8zRwbmc2N0/Tp-0j0jmxbI/AAAAAAAAAT0/6i0corWpY-A/s320/Screen+Shot+2011-10-20+at+1.41.01+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Then edit the viewDidLoad method.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-HDLE_J7_GJ8/Tp-1DbpnMnI/AAAAAAAAAT8/Tot4Q5RzgSA/s1600/Screen+Shot+2011-10-20+at+1.43.11+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="61" src="http://1.bp.blogspot.com/-HDLE_J7_GJ8/Tp-1DbpnMnI/AAAAAAAAAT8/Tot4Q5RzgSA/s400/Screen+Shot+2011-10-20+at+1.43.11+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
15. Go back to the main storyboard file and select the detail view controller and "Control + Drag" from the DetailViewController to each of the UILabels and connect them to the appropriate outlet.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-2i10iNasmuY/Tp-1dyifbgI/AAAAAAAAAUE/HKSmVmSPyOA/s1600/Screen+Shot+2011-10-20+at+1.45.02+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://2.bp.blogspot.com/-2i10iNasmuY/Tp-1dyifbgI/AAAAAAAAAUE/HKSmVmSPyOA/s640/Screen+Shot+2011-10-20+at+1.45.02+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-286FlV9coCM/Tp-1q9xiC7I/AAAAAAAAAUM/qPhXql-ENQc/s1600/Screen+Shot+2011-10-20+at+1.46.01+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="362" src="http://2.bp.blogspot.com/-286FlV9coCM/Tp-1q9xiC7I/AAAAAAAAAUM/qPhXql-ENQc/s640/Screen+Shot+2011-10-20+at+1.46.01+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
16. Then go back to the ViewController.m file and edit the didSelectRowAtIndexPathMethod so it matches the following. This is just passing data from one view to the other.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-WjDIiXPGJtE/Tp-2VTcS-sI/AAAAAAAAAUU/yvczkSy8Mt0/s1600/Screen+Shot+2011-10-20+at+1.48.15+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="98" src="http://1.bp.blogspot.com/-WjDIiXPGJtE/Tp-2VTcS-sI/AAAAAAAAAUU/yvczkSy8Mt0/s640/Screen+Shot+2011-10-20+at+1.48.15+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
So now when you select the state, the detail view will show the state's name and the state capital.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-JV9w3pptUiM/Tp-3JxDHHqI/AAAAAAAAAUc/Ia5DlFovruY/s1600/Screen+Shot+2011-10-20+at+1.52.14+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-JV9w3pptUiM/Tp-3JxDHHqI/AAAAAAAAAUc/Ia5DlFovruY/s320/Screen+Shot+2011-10-20+at+1.52.14+AM.png" width="172" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-YQw0kpnykxk/Tp-3KGzCFBI/AAAAAAAAAUk/qupaT4UeW-Q/s1600/Screen+Shot+2011-10-20+at+1.52.22+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-YQw0kpnykxk/Tp-3KGzCFBI/AAAAAAAAAUk/qupaT4UeW-Q/s320/Screen+Shot+2011-10-20+at+1.52.22+AM.png" width="168" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/vhEDyEOpuMk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/2667852974335083327/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=2667852974335083327" title="27 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/2667852974335083327?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/2667852974335083327?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/vhEDyEOpuMk/ios-5-storyboard-and.html" title="iOS 5 Storyboard and UITableViews Tutorial" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-TrH8f_PUS7w/Tp-g-vhrWmI/AAAAAAAAARU/hteRYoUvEMs/s72-c/Screen+Shot+2011-10-20+at+12.12.44+AM.png" height="72" width="72" /><thr:total>27</thr:total><georss:featurename>Columbia University, 1130 Amsterdam Ave, New York, NY 10027, USA</georss:featurename><georss:point>40.8079315 -73.9639021</georss:point><georss:box>40.795913 -73.9836431 40.819950000000006 -73.9441611</georss:box><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/ios-5-storyboard-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQBSXs7fyp7ImA9WhdaFUw.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-1853392149707671815</id><published>2011-10-17T13:42:00.000-07:00</published><updated>2011-10-24T21:35:58.507-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-24T21:35:58.507-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS5" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter integration" /><category scheme="http://www.blogger.com/atom/ns#" term="Twitter Framework" /><title>iOS 5 Twitter Integration HelloWorld Tutorial</title><content type="html">Edit: I just noticed that Apple provided much better sample code which can be found here:&amp;nbsp;&lt;a href="http://Apple Sample Code"&gt;Apple Sample Code&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In this tutorial we will demonstrate some new Twitter features in iOS 5.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;1. Create a new "Single View Application" called "TwitterHelloWorld".&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;2. Add the Twitter Framework to your new project. 

&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-QeOybD_9Neg/TpyDxRNosUI/AAAAAAAAAQs/AM5wR4NUM4E/s1600/Screen%2BShot%2B2011-10-17%2Bat%2B3.36.17%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="377" src="http://4.bp.blogspot.com/-QeOybD_9Neg/TpyDxRNosUI/AAAAAAAAAQs/AM5wR4NUM4E/s640/Screen%2BShot%2B2011-10-17%2Bat%2B3.36.17%2BPM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
3. Go to the "TwitterHelloWorldViewController.h" file and copy and paste the following.&amp;nbsp;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;span class="Apple-style-span" style="color: #181818; font-family: courier; font-size: 13px; line-height: 22px; white-space: pre;"&gt;&lt;script src="http://pastebin.com/embed_js.php?i=m6Eg1knZ"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;span class="Apple-style-span" style="color: #181818; font-family: courier; font-size: 13px; line-height: 22px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
4. Go to the "TwitterHelloWorldViewController.m" file and implement the following like below. The most important thing is to remember to "#include &lt;twitter twtweetcomposeviewcontroller.h=""&gt;" in either (.h/.m) files.&amp;nbsp;&lt;/twitter&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
The Twitter framework provides a class called "TWTweetComposeViewController". To use this class you must do four things: 1) Checks for service availability 2) Creates a view controller 3) Supplies a completion handler 4) Presents Modally.&amp;nbsp;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;span class="Apple-style-span" style="color: #181818; font-family: courier; font-size: 13px; line-height: 22px; white-space: pre;"&gt;&lt;script src="http://pastebin.com/embed_js.php?i=1TzAYkcm"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
5. Go to the MainStoryboard file and create a drag a button and connect it to the MainViewController. Connect the drag the button to the view controller and select the "presentTweetSheet:".&amp;nbsp;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-s8XAfl9YLq0/TpyRmHUd9MI/AAAAAAAAARE/UQv17rLxC6Q/s1600/iOS+Simulator+Screen+shot+Oct+17%252C+2011+4.35.29+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-s8XAfl9YLq0/TpyRmHUd9MI/AAAAAAAAARE/UQv17rLxC6Q/s320/iOS+Simulator+Screen+shot+Oct+17%252C+2011+4.35.29+PM.png" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
6. Start the simulator and if you haven't signed into your Twitter account it will prompt you to. If you're logged in a tweet sheet will pop-up and you will be able to type text. Below is the screenshot of http://www.twitter.com/kurrytran after I posted the tweet.&amp;nbsp;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href="http://1.bp.blogspot.com/-gFHVSvkrXsM/TpyP4OLiNxI/AAAAAAAAAQ0/3aReAmUFzNI/s1600/iOS+Simulator+Screen+shot+Oct+17%252C+2011+3.38.29+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-gFHVSvkrXsM/TpyP4OLiNxI/AAAAAAAAAQ0/3aReAmUFzNI/s320/iOS+Simulator+Screen+shot+Oct+17%252C+2011+3.38.29+PM.png" width="213" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-4zfHeFQngck/TpyP7xL51dI/AAAAAAAAAQ8/rODAfSWGR0s/s1600/iOS+Simulator+Screen+shot+Oct+17%252C+2011+3.39.06+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-4zfHeFQngck/TpyP7xL51dI/AAAAAAAAAQ8/rODAfSWGR0s/s320/iOS+Simulator+Screen+shot+Oct+17%252C+2011+3.39.06+PM.png" width="213" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
7. The sample code (which is heavily inspired by the Apple Demo) provides some other methods can you can use. If you're ever lost refer to the header files.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-S-k28VhdMRM/TpyUn0CjlkI/AAAAAAAAARM/WNOA1JqNXRo/s1600/Screen+Shot+2011-10-17+at+4.47.49+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="396" src="http://1.bp.blogspot.com/-S-k28VhdMRM/TpyUn0CjlkI/AAAAAAAAARM/WNOA1JqNXRo/s640/Screen+Shot+2011-10-17+at+4.47.49+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/D7C6YCImHH0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/1853392149707671815/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=1853392149707671815" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/1853392149707671815?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/1853392149707671815?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/D7C6YCImHH0/ios-5-twitter-integration-helloworld.html" title="iOS 5 Twitter Integration HelloWorld Tutorial" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-QeOybD_9Neg/TpyDxRNosUI/AAAAAAAAAQs/AM5wR4NUM4E/s72-c/Screen%2BShot%2B2011-10-17%2Bat%2B3.36.17%2BPM.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/ios-5-twitter-integration-helloworld.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcHRHw5cSp7ImA9WhdbGEU.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-3735018564250257568</id><published>2011-10-17T12:33:00.001-07:00</published><updated>2011-10-17T12:33:55.229-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-17T12:33:55.229-07:00</app:edited><title>Tutorial Submissions</title><content type="html">Since I'm applying to jobs at Twitter I will be creating iOS 5 tutorials using the Twitter Framework. If you have any questions about or things you would like to see, please let me know in the comments.&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/EVb5R7o08Tw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/3735018564250257568/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=3735018564250257568" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/3735018564250257568?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/3735018564250257568?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/EVb5R7o08Tw/tutorial-submissions.html" title="Tutorial Submissions" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/10/tutorial-submissions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIAR3c_eCp7ImA9WhdRF0k.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-6209211786677798701</id><published>2011-08-07T11:51:00.000-07:00</published><updated>2011-08-07T11:59:06.940-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-07T11:59:06.940-07:00</app:edited><title>Livestrong Campaign Visuals </title><content type="html">&lt;h1&gt;Livestrong Campaign Click Sources by Internet Site &lt;/h1&gt;&lt;br /&gt;
&lt;h2&gt;Line Graph &lt;/h2&gt;&lt;br /&gt;
&lt;iframe frameborder="no" height="500px" scrolling="no" src="http://www.google.com/fusiontables/embedviz?gco_chartArea=%7B%22top%22%3A%2230%22%7D&amp;amp;containerId=gviz_canvas&amp;amp;q=select+col0%2C+col1+from+1258611+&amp;amp;qrs=where+col0+%3E%3D+&amp;amp;qre=+and+col0+%3C%3D+&amp;amp;qe=+order+by+col0+asc+limit+11&amp;amp;viz=GVIZ&amp;amp;t=LINE&amp;amp;width=700&amp;amp;height=300" width="700px"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Livestrong Campaign Click Sources by Country &lt;/h1&gt;&lt;br /&gt;
&lt;h2&gt;Intensity Map &lt;/h2&gt;&lt;br /&gt;
&lt;iframe frameborder="no" height="500px" scrolling="no" src="http://www.google.com/fusiontables/embedviz?gco_region=world&amp;amp;gco_dataMode=regions&amp;amp;gco_chartArea=%7B%22top%22%3A%2230%22%7D&amp;amp;containerId=gviz_canvas&amp;amp;q=select+gvizcountry(col0)%2C+col1%2C+col0+from+1258732+&amp;amp;qrs=where+gvizcountry(col0)+%3E%3D+&amp;amp;qre=+and+gvizcountry(col0)+%3C%3D+&amp;amp;qe=+limit+99&amp;amp;viz=GVIZ&amp;amp;t=MAP&amp;amp;width=700&amp;amp;height=300" width="700px"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Pie Graph &lt;/h2&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="no" height="500px" scrolling="no" src="http://www.google.com/fusiontables/embedviz?gco_chartArea=%7B%22top%22%3A%2230%22%7D&amp;amp;containerId=gviz_canvas&amp;amp;q=select+col0%2C+col1+from+1258732+&amp;amp;qrs=where+col0+%3E%3D+&amp;amp;qre=+and+col0+%3C%3D+&amp;amp;qe=+limit+99&amp;amp;viz=GVIZ&amp;amp;t=PIE&amp;amp;width=700&amp;amp;height=500" width="700px"&gt;&lt;/iframe&gt;&lt;span class="Apple-style-span" style="font-size: 32px; font-weight: bold;"&gt;Livestrong Campaign Click Sources by Day&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: 32px; font-weight: bold;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-sd-3VEOZjcg/Tj7eMtwbB9I/AAAAAAAAAQY/Rk47N5r1kz4/s1600/Screen%2Bshot%2B2011-08-07%2Bat%2B2.48.51%2BPM.png" imageanchor="1"&gt;&lt;img border="0" height="157" src="http://2.bp.blogspot.com/-sd-3VEOZjcg/Tj7eMtwbB9I/AAAAAAAAAQY/Rk47N5r1kz4/s640/Screen%2Bshot%2B2011-08-07%2Bat%2B2.48.51%2BPM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Source: bit.ly&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/22iRhU05Tjo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/6209211786677798701/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=6209211786677798701" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/6209211786677798701?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/6209211786677798701?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/22iRhU05Tjo/livestrong-campaign-visuals.html" title="&lt;h1&gt;Livestrong Campaign Visuals &lt;/h1&gt;" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-sd-3VEOZjcg/Tj7eMtwbB9I/AAAAAAAAAQY/Rk47N5r1kz4/s72-c/Screen%2Bshot%2B2011-08-07%2Bat%2B2.48.51%2BPM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/08/livestrong-campaign-visuals.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4DQng_fCp7ImA9WhdREkw.&quot;"><id>tag:blogger.com,1999:blog-7889009576291030100.post-4552993294704786382</id><published>2011-08-01T10:16:00.000-07:00</published><updated>2011-08-01T10:16:13.644-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-01T10:16:13.644-07:00</app:edited><title>iOS 5 Tutorial - Part I. SQLite + UITableView + UISearchBar Tutorial</title><content type="html">&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; There are many ways to retrieve and store data on the iPhone, from property lists to NSCoding, from SQLite to Core Data. I thought that after trying to learn all three that SQLite was the easiest to learn. This three-part tutorial series is going&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;to cover how to fill a UITableView with data from a SQLite database and then incorporate a UISearchBar. I really thought there were no good tutorials on all three so I thought I should create my own.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; In this first part of the tutorial we will create a sqlite database and then read the values from the database and create an array of objects to fill the tableviews in the future tutorial. This first tutorial can really apply to anything where you have to read from a database and then create an array of objects.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;1. Suppose you have a csv file of buildings with the fields id, name, latitude, longitude, type. You will need to convert this to a sqlite database. Place the buildings.csv file on the desktop.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: #181818; font-family: courier; line-height: 22px; white-space: pre;"&gt;&lt;script src="http://pastebin.com/embed_js.php?i=jA6aRDKG"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;2. Open a terminal window and with the buildings.csv file on the desktop execute the following commands.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Xhi-tVWF--o/TjbIDCUkuvI/AAAAAAAAAPM/1h4eWy-FZOI/s1600/Screen+shot+2011-08-01+at+11.36.19+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-Xhi-tVWF--o/TjbIDCUkuvI/AAAAAAAAAPM/1h4eWy-FZOI/s640/Screen+shot+2011-08-01+at+11.36.19+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;3. Then you should see something like the following.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_nhvczZdvsA/TjbIfUiNS3I/AAAAAAAAAPQ/HLiy7zOM-8k/s1600/Screen+shot+2011-08-01+at+11.38.11+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="417" src="http://4.bp.blogspot.com/-_nhvczZdvsA/TjbIfUiNS3I/AAAAAAAAAPQ/HLiy7zOM-8k/s640/Screen+shot+2011-08-01+at+11.38.11+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Note: I converted everything to type &lt;i&gt;text.&lt;/i&gt;&amp;nbsp;I thought it was much more difficult later on to convert number types and everything is a lot easier to deal with that way.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;4. Create a new &lt;i&gt;Master-Detail Application&lt;/i&gt;&amp;nbsp;called &lt;i&gt;buildings&lt;/i&gt;. Then drag and drop the buildings.sqlite file into your project folder. Then add the libsqlite3.dylib framework to your project. Click the buildings project at the top of the far left column.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;i.e. buildings &amp;gt; Building Phases &amp;gt; Link Binary With Libraries &amp;gt; + &amp;gt; libsqlite3.dylib&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-tFKPDx9-aec/TjbbRdLfhRI/AAAAAAAAAPc/-7wr3-zfdPg/s1600/Screen+Shot+2011-08-01+at+11.51.31+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="364" src="http://1.bp.blogspot.com/-tFKPDx9-aec/TjbbRdLfhRI/AAAAAAAAAPc/-7wr3-zfdPg/s640/Screen+Shot+2011-08-01+at+11.51.31+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;5. For organizational purposes drag and drop the .dylib file into your frameworks folder.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;6. Then create a new building object called &lt;i&gt;Building &lt;/i&gt;which is a subclass of NSObject.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #181818; font-family: courier; line-height: 22px; white-space: pre;"&gt;&lt;script src="http://pastebin.com/embed_js.php?i=UdrFHCLf"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #181818; font-family: courier; line-height: 22px; white-space: pre;"&gt;&lt;script src="http://pastebin.com/embed_js.php?i=MThJx2Jd"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;7. Now go to your buildingsAppDelegate (.h/.m) and add the code below.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: #181818; font-family: courier; line-height: 22px; white-space: pre;"&gt;&lt;script src="http://pastebin.com/embed_js.php?i=ewHxP7wW"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #181818; font-family: courier; line-height: 22px; white-space: pre;"&gt;&lt;script src="http://pastebin.com/embed_js.php?i=wpiJ7YNQ"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #181818; font-family: courier;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;8. Now with the added code you should NSLog the values from the values retrieved from the database. Most of the code is commented/ self-explanatory so I will not go into depth about what everything does here.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;It's important to correctly NSLog the values to ensure that you are doing it correctly. Now that you've read from the database correctly you can now move on to filling the UITableView.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Note: The first battle is to ensure that your program is correctly reading from the database. If you can retrieve the values from the database and the objects look like they make sense, then you can move on.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Debugging Tip #1: Print out the values that were retrieved from the database.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Debugging Tip #2: Print out the values in the fields of the objects. Sometimes objects are not allocated or set properly and this will save you a lot of headache in the future. &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;My Error 1:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Code: NSLog(@"Name: %@, Latitude:%g Longitude: %g", name, latitude, longitude);&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Discussion: Since the variable type in my object was of type NSString the output was incorrect since I used (%g) which is for doubles.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-LXKjXcwzawk/TjbbRwOi7BI/AAAAAAAAAPg/b_dxWiUa1dk/s1600/Screen+Shot+2011-08-01+at+12.36.52+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://1.bp.blogspot.com/-LXKjXcwzawk/TjbbRwOi7BI/AAAAAAAAAPg/b_dxWiUa1dk/s640/Screen+Shot+2011-08-01+at+12.36.52+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Debugging Output 1: This is what my output looked like when I printed the values that were retrieved from the database.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-YYuiLdNhRXQ/TjbbSHh08yI/AAAAAAAAAPk/lWBL5S1J424/s1600/Screen+Shot+2011-08-01+at+12.38.05+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="276" src="http://2.bp.blogspot.com/-YYuiLdNhRXQ/TjbbSHh08yI/AAAAAAAAAPk/lWBL5S1J424/s640/Screen+Shot+2011-08-01+at+12.38.05+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Debugging Output 2: This is what my output looked like when I printed the values that were retrieved from the objects in the items array.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-eYEICck-iZk/TjbbSVpJX5I/AAAAAAAAAPo/aBQWdD_8T_A/s1600/Screen+Shot+2011-08-01+at+12.49.26+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="310" src="http://4.bp.blogspot.com/-eYEICck-iZk/TjbbSVpJX5I/AAAAAAAAAPo/aBQWdD_8T_A/s640/Screen+Shot+2011-08-01+at+12.49.26+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SoFHn/~4/MTMIwj4dtcs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kurrytran.blogspot.com/feeds/4552993294704786382/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7889009576291030100&amp;postID=4552993294704786382" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/4552993294704786382?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7889009576291030100/posts/default/4552993294704786382?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SoFHn/~3/MTMIwj4dtcs/ios-5-tutorial-part-i-sqlite.html" title="iOS 5 Tutorial - Part I. SQLite + UITableView + UISearchBar Tutorial" /><author><name>Technology Blog</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-Ia7D1dmOxZM/Tibzr8z8yOI/AAAAAAAAALQ/TMFiqGwsOhM/s220/picture.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-Xhi-tVWF--o/TjbIDCUkuvI/AAAAAAAAAPM/1h4eWy-FZOI/s72-c/Screen+shot+2011-08-01+at+11.36.19+AM.png" height="72" width="72" /><thr:total>9</thr:total><feedburner:origLink>http://kurrytran.blogspot.com/2011/08/ios-5-tutorial-part-i-sqlite.html</feedburner:origLink></entry></feed>
