<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-782196475388148196</id><updated>2011-12-07T01:21:25.671+09:00</updated><category term='習作アプリ'/><category term='UITableView'/><category term='Provisioning'/><category term='手続き'/><category term='CoreData'/><category term='NSFetchedResultsController'/><category term='本'/><title type='text'>(旧) Cocoa Touch の日々</title><subtitle type='html'>iPhoneプログラミング（不定期更新）</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-8248771518259199252</id><published>2010-06-13T22:26:00.000+09:00</published><updated>2010-06-13T22:26:27.884+09:00</updated><title type='text'>サイトをリニューアルしました</title><content type='html'>新しいサイトはこちらです↓&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cocoadays.blogspot.com/" target="_blank"&gt;Cocoaの日々&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;※このサイトは閉鎖せずに今後も公開しておきます。&lt;br /&gt;&lt;br /&gt;長い間ありがとうございました。&lt;br /&gt;よければ新しいサイトの方も訪問してみて下さい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-8248771518259199252?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/8248771518259199252/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2010/06/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/8248771518259199252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/8248771518259199252'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2010/06/blog-post.html' title='サイトをリニューアルしました'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-8571234058214583419</id><published>2010-06-11T13:10:00.000+09:00</published><updated>2010-06-11T13:10:08.515+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UITableView'/><title type='text'>UITableView の editingモードで左側の削除アイコンを消す</title><content type='html'>これを&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ZoUhefzk0CI/TBG21ZWteSI/AAAAAAAAE3M/ZnnIVAm1uvg/s1600/100611-0002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_ZoUhefzk0CI/TBG21ZWteSI/AAAAAAAAE3M/ZnnIVAm1uvg/s320/100611-0002.png" /&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/_ZoUhefzk0CI/TBG22ae0OQI/AAAAAAAAE3U/ZnnPcSjTj4U/s1600/100611-0001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ZoUhefzk0CI/TBG22ae0OQI/AAAAAAAAE3U/ZnnPcSjTj4U/s320/100611-0001.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;UITableViewDelegate の２つのメソッドを実装すれば良い。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #7415a9;"&gt;UITableViewCellEditingStyle&lt;/span&gt;)tableView:(&lt;span style="color: #7415a9;"&gt;UITableView&lt;/span&gt; *)&lt;span style="color: #7415a9;"&gt;tableView&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #7415a9;"&gt;&lt;/span&gt;&amp;nbsp;editingStyleForRowAtIndexPath:(&lt;span style="color: #7415a9;"&gt;NSIndexPath&lt;/span&gt; *)indexPath&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;/div&gt;&lt;div style="color: #430081; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #b900a2;"&gt;return&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;UITableViewCellEditingStyleNone&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #b900a2;"&gt;BOOL&lt;/span&gt;)tableView:(&lt;span style="color: #7415a9;"&gt;UITableView&lt;/span&gt; *)&lt;span style="color: #7415a9;"&gt;tableView&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #7415a9;"&gt;&lt;/span&gt;&amp;nbsp;shouldIndentWhileEditingRowAtIndexPath:(&lt;span style="color: #7415a9;"&gt;NSIndexPath&lt;/span&gt; *)indexPath&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;/div&gt;&lt;div style="color: #b900a2; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;return&lt;span style="color: black;"&gt; &lt;/span&gt;NO&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-8571234058214583419?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/8571234058214583419/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2010/06/uitableview-editing.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/8571234058214583419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/8571234058214583419'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2010/06/uitableview-editing.html' title='UITableView の editingモードで左側の削除アイコンを消す'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZoUhefzk0CI/TBG21ZWteSI/AAAAAAAAE3M/ZnnIVAm1uvg/s72-c/100611-0002.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-2298665164518243553</id><published>2010-06-04T18:09:00.000+09:00</published><updated>2010-06-04T18:09:16.510+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreData'/><category scheme='http://www.blogger.com/atom/ns#' term='NSFetchedResultsController'/><title type='text'>NSFetchedResultsController でグルーピング（Section分け）</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande';"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;概要&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: 'Lucida Grande'; font-size: 12px; white-space: pre;"&gt;NSFetchedResultsController のインスタンスを作る時に sectionNameKeyPath: へグルーピング条件となるKeyPathを渡すと、簡単に UITableView でグルーピングができる。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;例えばこれが&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ZoUhefzk0CI/TAi_bIwY2QI/AAAAAAAAE10/WMpbfw-63LE/s1600/100604-0004.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/TAi_bIwY2QI/AAAAAAAAE10/WMpbfw-63LE/s320/100604-0004.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;こうなる。&lt;/span&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/_ZoUhefzk0CI/TAi_exniOXI/AAAAAAAAE18/CqICeqNH2Vw/s1600/100604-0003.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/TAi_exniOXI/AAAAAAAAE18/CqICeqNH2Vw/s320/100604-0003.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande';"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;sectionNameKeyPath:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;インスタンス作成時のコードはこんな感じ。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #742baa;"&gt;NSFetchedResultsController&lt;/span&gt; *aFetchedResultsController =&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[[&lt;/span&gt;NSFetchedResultsController&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;alloc&lt;/span&gt;&lt;span style="color: black;"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;initWithFetchRequest&lt;span style="color: black;"&gt;:fetchRequest&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &lt;span style="color: #410182;"&gt;managedObjectContext&lt;/span&gt;:coreDataManager.&lt;span style="color: #742baa;"&gt;managedObjectContext&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &lt;/span&gt;sectionNameKeyPath&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;@"treatedYear"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;cacheName&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;@"Root"&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;@"treatedYear" を渡している。これがグルーピング条件（今回は「年」）となる。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: 'Lucida Grande'; font-size: 12px; white-space: pre;"&gt;さて、この treatedYear（年） だが、検索対象のエンティティには実は存在しない。&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/_ZoUhefzk0CI/TAjAWbRZu4I/AAAAAAAAE2E/Awv6bzlqUIA/s1600/100604-0005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ZoUhefzk0CI/TAjAWbRZu4I/AAAAAAAAE2E/Awv6bzlqUIA/s320/100604-0005.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;treatedDate が存在するが、これは NSDate(年月日時分秒)の属性。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;treatedDate そのままでは年単位のグルーピング条件に成り得ないので、年を別途用意する必要がある。それが treatedYear。この treatedYear はメソッドとして存在するだけのテンポラリな値で永続化対象にはしていない。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #bc00a3;"&gt;@implementation&lt;/span&gt; Record (Extension)   ← RecordはNSManagedObjectのサブクラスで、カテゴリでメソッドを追加&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #742baa;"&gt;NSInteger&lt;/span&gt;)treatedYear&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;NSCalendar&lt;span style="color: black;"&gt;* calendar = [&lt;/span&gt;NSCalendar&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;currentCalendar&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSDateComponents&lt;/span&gt;* dateComponents =&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;[calendar &lt;/span&gt;components&lt;span style="color: black;"&gt;:&lt;/span&gt;NSYearCalendarUnit&lt;/div&gt;&lt;div style="color: #32595d; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #410182;"&gt;fromDate&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;treatedDate&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;return&lt;/span&gt; [dateComponents &lt;span style="color: #410182;"&gt;year&lt;/span&gt;];&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;NSFetchedResultsController がグルーピングを行う際に、初期化時に指定された sectionNameKeyPath:@"treatedYear" を元にこのメソッドを呼び出す。このメソッドでは treatedDate(NSDat型:年月日時分秒)から年の値だけを取り出して返している。これでグルーピング条件を提供できる。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande';"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;表示するセクション名&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;グルーピングするにはさらに UITableViewDataSource の tableView:titleForHeaderInSection: を定義する必要がある。このメソッドが定義されていない場合はグルーピング表示されない。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt; *)tableView:(&lt;span style="color: #742baa;"&gt;UITableView&lt;/span&gt; *)&lt;span style="color: #742baa;"&gt;tableView&lt;/span&gt; titleForHeaderInSection:(&lt;span style="color: #742baa;"&gt;NSInteger&lt;/span&gt;)section&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;return&lt;/span&gt;&lt;span style="color: black;"&gt; [&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;stringWithFormat&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;@"%@&lt;/span&gt;&lt;span style="color: #d11a1c; font: 11.0px 'Hiragino Kaku Gothic ProN';"&gt;年&lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[[[&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;fetchedResultsController&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;sections&lt;span style="color: black;"&gt;] &lt;/span&gt;objectAtIndex&lt;span style="color: black;"&gt;:section] &lt;/span&gt;name&lt;span style="color: black;"&gt;], &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;これで出来上がり。 &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;- - - -&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;件数が極端に多い場合は「年」をエンティティの属性として追加しておいた方がパフォーマンス的にはいいかもしれない。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-2298665164518243553?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/2298665164518243553/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2010/06/nsfetchedresultscontroller-section.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2298665164518243553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2298665164518243553'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2010/06/nsfetchedresultscontroller-section.html' title='NSFetchedResultsController でグルーピング（Section分け）'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZoUhefzk0CI/TAi_bIwY2QI/AAAAAAAAE10/WMpbfw-63LE/s72-c/100604-0004.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-6378970579656976159</id><published>2010-01-09T05:11:00.002+09:00</published><updated>2010-01-09T05:14:02.682+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='本'/><title type='text'>（本）iPhoneアプリネットワーク+GPSプログラミング</title><content type='html'>&lt;a href="http://www.amazon.co.jp/gp/product/4798024244?ie=UTF8&amp;amp;tag=xcatsan-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=4798024244"&gt;iPhoneアプリネットワーク+GPSプログラミング&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.jp/e/ir?t=xcatsan-22&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=4798024244" style="border: none !important; margin: 0px !important;" width="1" /&gt; を入手。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;目次&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;iPhone OS ネットワークプログラミング&lt;/li&gt;&lt;li&gt;App Store のネットワークアプリ&lt;/li&gt;&lt;li&gt;ネットワーク＆GPSプログラミング技術解説&lt;/li&gt;&lt;li&gt;ネットワークプログラミング解説&lt;/li&gt;&lt;li&gt;パフォーマンス・チューニング&lt;/li&gt;&lt;li&gt;遠方への iPhoneアプリの配布&lt;/li&gt;&lt;li&gt;iPhoneの魅力とは - アプリ開発スタイル&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;感想&lt;/b&gt;&lt;br /&gt;iPhone におけるネットワークプログラミングと地図/GPSまわりのプログラミングを手っ取り早く知るには良い（その方面の）入門書。アーキテクチャやソースコードの解説があるので、ざっと眺めるだけでも地図を使うプログラミングの雰囲気がわかる。またサーバサイド（PHPやGoogleMap）との連携も取り上げられているので、アプリ単体開発だけでなく iPhoneを活用する Webサービス全体の構成イメージを掴むのにも役立つ。その他パフォーマンスチューニングや AdHoc配布の解説などは他分野の iPhoneアプリ開発でも参考になる。&lt;br /&gt;&lt;br /&gt;なお C言語や Objective-C に関しては一切解説は無い。&lt;br /&gt;&lt;br /&gt;以下気になった点。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;プッシュ通知の解説&lt;/li&gt;&lt;li&gt;デバッグの方法&lt;/li&gt;&lt;li&gt;XMLパース&lt;/li&gt;&lt;li&gt;WordPress の活用&lt;/li&gt;&lt;li&gt;ネットワーク接続チェックの仕方（WiFi接続の落とし穴）&lt;/li&gt;&lt;li&gt;AR&lt;/li&gt;&lt;li&gt;逆ジオコーディング&lt;/li&gt;&lt;li&gt;Instruments/Shark を活用したパフォーマンスチューニング&lt;/li&gt;&lt;li&gt;AdHoc 配布の手順&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;amp;bc1=FFFFFF&amp;amp;IS2=1&amp;amp;npa=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=xcatsan-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as1&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;asins=4798024244" style="height: 240px; width: 120px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-6378970579656976159?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/6378970579656976159/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2010/01/iphonegps.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/6378970579656976159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/6378970579656976159'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2010/01/iphonegps.html' title='（本）iPhoneアプリネットワーク+GPSプログラミング'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-2254688760701395248</id><published>2009-12-11T05:02:00.000+09:00</published><updated>2009-12-11T05:02:59.851+09:00</updated><title type='text'>写真撮影後に viewDidLoad が呼び出される</title><content type='html'>UIImagePickerController を使って写真を撮影したのち、呼び出し元の UIViewConroller の viewDidLoadが呼び出されていることに気がついた。このメソッドはてっきり最初に一回だけ呼び出されるものと思っていたのでここへ初期化処理を書いておいたのだが、そのせいで写真撮影毎に初期化処理が呼び出されてしまった。また view上の UIImageView へ設定していた画像が表示されない。中身を確認すると nil になっていた。&lt;br /&gt;&lt;br /&gt;調べてみると、どうもメモリ不足が原因で UIViewController が view を再作成しているのが原因ということだった。&lt;br /&gt;&lt;a href="http://iphone-dev.g.hatena.ne.jp/f-shin/20090121" target="_blank"&gt;2009-01-21 - f-shinの日記 - iPhoneアプリ開発グループ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;実際、didReceiveMemoryWarning が呼び出されているのがわかった。&lt;br /&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)didReceiveMemoryWarning {&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;// Releases the view if it doesn't have a superview.&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #410182;"&gt;NSLog&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;@"didReceiveMemoryWarning"&lt;span style="color: black;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;super&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;didReceiveMemoryWarning&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span class="Apple-style-span" style="color: #008900;"&gt;&amp;nbsp;// Release any cached data, images, etc that aren't in use.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;おー、そうなのか。&lt;br /&gt;&lt;br /&gt;参考本で紹介されていた下記のコードは使えないことがわかる（実際、OS v3.1.2の実機で画像が表示できない）。&lt;br /&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)imagePickerController:(&lt;span style="color: #742baa;"&gt;UIImagePickerController&lt;/span&gt; *)picker didFinishPickingMediaWithInfo:(&lt;span style="color: #742baa;"&gt;NSDictionary&lt;/span&gt; *)info&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-style-span" style="color: #410182;"&gt;&lt;span style="color: black;"&gt;[picker &lt;/span&gt;dismissModalViewControllerAnimated&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;YES&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #4f8187;"&gt;photoView&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;image&lt;span style="color: black;"&gt; =&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #742baa;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;[info &lt;/span&gt;&lt;span style="color: #410182;"&gt;objectForKey&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;UIImagePickerControllerOriginalImage&lt;span style="color: black;"&gt;];&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;なぜなら photoView（UIImageView）はメモリ不足が生じた場合、この直後に再作成されるので。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;対策方法の１つとしては viewを開放させない（再作成させない）ことが紹介されていた。&lt;br /&gt;もう一つは viewが再作成されることを前提に実装する方法。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;正攻法はやっぱり後者なんだろうな。&lt;br /&gt;その場合、撮影した画像は UIViewController のプロパティへ直接設定するのではなく別の場所へ保存し、表示する時にそれを使うようにする必要がある。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-2254688760701395248?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/2254688760701395248/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/12/viewdidload.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2254688760701395248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2254688760701395248'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/12/viewdidload.html' title='写真撮影後に viewDidLoad が呼び出される'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-5037245322270207058</id><published>2009-11-25T06:00:00.002+09:00</published><updated>2009-11-25T06:01:06.320+09:00</updated><title type='text'>画像を保存する</title><content type='html'>UIImagePickerController から取得した画像を保存する。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;ファイル名&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ユニークにしたいので何かランダムなものにしたい。UUID を使うことにする。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #78482a; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;- (&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt;*) stringWithUUID {&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #742baa;"&gt;CFUUIDRef&lt;/span&gt;&lt;span style="color: black;"&gt; uuidObj = &lt;/span&gt;&lt;span style="color: #410182;"&gt;CFUUIDCreate&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;&lt;span style="color: black;"&gt;);&lt;/span&gt;//create a new UUID&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;//get the string representation of the UUID&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt; *uuidString = (&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt;*)&lt;span style="color: #410182;"&gt;CFUUIDCreateString&lt;/span&gt;(&lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;, uuidObj);&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;CFRelease&lt;/span&gt;(uuidObj);&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;return&lt;/span&gt; [uuidString &lt;span style="color: #410182;"&gt;autorelease&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #78482a; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;- (&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt;*)createImageFilename&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt;* filename =&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;stringWithFormat&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;@"%@.jpg"&lt;/span&gt;&lt;span style="color: black;"&gt;, [&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #32595d;"&gt;stringWithUUID&lt;/span&gt;&lt;span style="color: black;"&gt;]];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;return&lt;/span&gt; filename;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Menlo; font-size: small;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;（参考）&lt;a href="http://xcatsan.blogspot.com/2009/11/uuid-cfuuidcreate-globallyuniquestring.html" target="_blank"&gt;Cocoaの日々: UUID を作る - CFUUIDCreate と globallyUniqueString&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;保存先&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;標準のドキュメントフォルダ直下とする。&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Menlo; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;- (&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt;*)getImageFilepath&lt;br /&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Menlo; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: normal normal normal 11px/normal Menlo; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSArray&lt;/span&gt;&lt;span style="color: black;"&gt;* paths =&amp;nbsp;&lt;/span&gt;NSSearchPathForDirectoriesInDomains&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: normal normal normal 11px/normal Menlo; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;NSDocumentDirectory&lt;span style="color: black;"&gt;,&amp;nbsp;&lt;/span&gt;NSUserDomainMask&lt;span style="color: black;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;YES&lt;/span&gt;&lt;span style="color: black;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Menlo; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt;* path = [paths&amp;nbsp;&lt;span style="color: #410182;"&gt;objectAtIndex&lt;/span&gt;:&lt;span style="color: #3900d9;"&gt;0&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: normal normal normal 11px/normal Menlo; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;return&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;[path&amp;nbsp;&lt;/span&gt;stringByAppendingPathComponent&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;memo&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #32595d;"&gt;photo&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Menlo; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;保存処理&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;UIImageJPEGRepresentation を使う。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)saveImage&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSData&lt;/span&gt;&lt;span style="color: black;"&gt;* data = &lt;/span&gt;UIImageJPEGRepresentation&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;photoView&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #742baa;"&gt;image&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: #3900d9;"&gt;0.5&lt;/span&gt;&lt;span style="color: black;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[data &lt;/span&gt;writeToFile&lt;span style="color: black;"&gt;:[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #32595d;"&gt;getImageFilepath&lt;/span&gt;&lt;span style="color: black;"&gt;] &lt;/span&gt;atomically&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;NO&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Menlo; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Menlo; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tokyo-Prop; font-size: medium;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;（参考）&lt;a href="http://xcatsan2.blogspot.com/2009/11/uikit-functions.html" target="_blank"&gt;Cocoa Touch の日々: UIKit Functions&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-5037245322270207058?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/5037245322270207058/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/11/blog-post_25.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/5037245322270207058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/5037245322270207058'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/11/blog-post_25.html' title='画像を保存する'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-8940737315193357760</id><published>2009-11-20T05:56:00.004+09:00</published><updated>2009-11-20T06:08:21.998+09:00</updated><title type='text'>UIKit Functions</title><content type='html'>いわゆるユーティリティ系の関数があるのに気がついた。&lt;br /&gt;&lt;br /&gt;画像系だとこんなのがある。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Monaco, Courier, Consolas, monospace; font-size: 11px; white-space: pre;"&gt;&lt;a href="file:///Developer/Platforms/iPhoneOS.platform/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone3_1.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSData" style="color: #3366cc; text-decoration: none;" target="_top"&gt;NSData&lt;/a&gt; * UIImageJPEGRepresentation (&lt;/span&gt;&lt;br /&gt;&lt;pre class="declaration" style="font-family: Monaco, Courier, Consolas, monospace; font-size: 11px; margin-bottom: 10px; margin-top: 5px;"&gt;&lt;a href="file:///Developer/Platforms/iPhoneOS.platform/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone3_1.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UIImage" style="color: #3366cc; text-decoration: none;" target="_top"&gt;UIImage&lt;/a&gt; *image,&lt;br /&gt;   CGFloat compressionQuality&lt;br /&gt;);&lt;/pre&gt;&lt;span style="font-family: Monaco, Courier, Consolas, monospace; font-size: 11px; white-space: pre;"&gt;&lt;a href="file:///Developer/Platforms/iPhoneOS.platform/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone3_1.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSData" style="color: #3366cc; text-decoration: none;" target="_top"&gt;NSData&lt;/a&gt; * UIImagePNGRepresentation (&lt;/span&gt;&lt;br /&gt;&lt;pre class="declaration" style="font-family: Monaco, Courier, Consolas, monospace; font-size: 11px; margin-bottom: 10px; margin-top: 5px;"&gt;&lt;a href="file:///Developer/Platforms/iPhoneOS.platform/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone3_1.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UIImage" style="color: #3366cc; text-decoration: none;" target="_top"&gt;UIImage&lt;/a&gt; *image&lt;br /&gt;);&lt;/pre&gt;&lt;pre class="declaration" style="font-family: Monaco, Courier, Consolas, monospace; font-size: 11px; margin-bottom: 10px; margin-top: 5px;"&gt;void UIImageWriteToSavedPhotosAlbum (&lt;/pre&gt;&lt;pre class="declaration" style="font-family: Monaco, Courier, Consolas, monospace; font-size: 11px; margin-bottom: 10px; margin-top: 5px;"&gt;&lt;a href="file:///Developer/Platforms/iPhoneOS.platform/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone3_1.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UIImage" style="color: #3366cc; text-decoration: none;" target="_top"&gt;UIImage&lt;/a&gt;  *image,&lt;br /&gt;   id       completionTarget,&lt;br /&gt;   SEL      completionSelector,&lt;br /&gt;   void     *contextInfo&lt;br /&gt;);&lt;/pre&gt;&lt;br /&gt;画像を保存する時に使えそう。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（追加）画像の処理については下記の記事が詳しい。&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/1282830/uiimagepickercontroller-uiimage-memory-and-more" target="_blank"&gt;UIImagePickerController, UIImage, Memory and More! - Stack Overflow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;基本的なことから画像の縮小や保存まで書かれていて参考になる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-8940737315193357760?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/8940737315193357760/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/11/uikit-functions.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/8940737315193357760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/8940737315193357760'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/11/uikit-functions.html' title='UIKit Functions'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-4038557688083073806</id><published>2009-11-18T06:27:00.002+09:00</published><updated>2009-11-18T06:29:23.633+09:00</updated><title type='text'>キーボードの表示制御 - resignFirstResponder と透明なボタン</title><content type='html'>OneLiner の作成は細々と続いている。今はこんな感じ。&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ZoUhefzk0CI/SwMQXIj8oJI/AAAAAAAADhA/koHMbL0d9Hg/s1600/091118-0001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_ZoUhefzk0CI/SwMQXIj8oJI/AAAAAAAADhA/koHMbL0d9Hg/s320/091118-0001.jpg" /&gt;&lt;/a&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/_ZoUhefzk0CI/SwMRF79etkI/AAAAAAAADhI/RklLT61asJc/s1600/091118-0002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/SwMRF79etkI/AAAAAAAADhI/RklLT61asJc/s320/091118-0002.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&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;a href="http://1.bp.blogspot.com/_ZoUhefzk0CI/SwMRNQtyq3I/AAAAAAAADhQ/2BBLxMfxebs/s1600/091118-0003.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ZoUhefzk0CI/SwMRNQtyq3I/AAAAAAAADhQ/2BBLxMfxebs/s320/091118-0003.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;前回テキストフィールドにフォーカスがあたった状態で、詳細ビューを開く&lt;/li&gt;&lt;li&gt;テキストフィールドにフォーカスをあててしまった&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;このままだと画像が見えなくて困るのでキーボードを隠す必要がある。&lt;a href="http://www.amazon.co.jp/gp/product/4797354011?ie=UTF8&amp;amp;tag=xcatsan-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=4797354011"&gt;はじめてのiPhoneプログラミング&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.jp/e/ir?t=xcatsan-22&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=4797354011" style="border: none !important; margin: 0px !important;" width="1" /&gt; によればフォーカスを外せばキーボードは自動的に隠れるとのこと。そこで次のタイミングでフォーカスを外す事ににした。&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;詳細ビューが隠れる時&lt;/li&gt;&lt;li&gt;テキストフィールド以外をタッチした時&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;フォーカスを外すには全てのテキストフィールドに対して resignFirstResponder を投げれば良い。その為の小さなメソッドを書いた。&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)hideKeyboard&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;textTitle&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;resignFirstResponder&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;textMemo&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;resignFirstResponder&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;これを各タイミングで呼出せば良い。詳細ビューが隠れる時は UIViewController&amp;nbsp;の viewWillDisappear をオーバーライドする。&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;- (&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;viewWillDisappear&lt;span style="color: black;"&gt;:(&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;BOOL&lt;/span&gt;&lt;span style="color: black;"&gt;)animated&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #32595d; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;hideKeyboard&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;なおビューが隠れた後では遅いので viewDidDisappear はこの目的では使えない。&lt;br /&gt;&lt;br /&gt;「テキストフィールド以外をタッチした時」は、画面を覆う透明なボタンを作り、それがタッチされた時に先ほどの hideKeyboard を呼出せば良い。このボタンは Interface Builder で Round Rect Button を配置し、ビュー一杯に広げた後に Type を Custom に変えると透明なボタンになる。&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ZoUhefzk0CI/SwMU82H2kNI/AAAAAAAADhY/YQ11dWflxIk/s1600/091118-0004.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/SwMU82H2kNI/AAAAAAAADhY/YQ11dWflxIk/s320/091118-0004.jpg" /&gt;&lt;/a&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/_ZoUhefzk0CI/SwMVBC7mNoI/AAAAAAAADhg/ghDP6nLjzFQ/s1600/091118-0005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/SwMVBC7mNoI/AAAAAAAADhg/ghDP6nLjzFQ/s320/091118-0005.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;さらに他のコントロールの下へ来る様に Layout メニューで Send To Back を選び、背面へ移動させる。&lt;br /&gt;上記は&lt;a href="http://www.amazon.co.jp/gp/product/4797354011?ie=UTF8&amp;amp;tag=xcatsan-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=4797354011"&gt;はじめてのiPhoneプログラミング&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.jp/e/ir?t=xcatsan-22&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=4797354011" style="border-bottom-style: none !important; border-color: initial !important; border-left-style: none !important; border-right-style: none !important; border-top-style: none !important; border-width: initial !important; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important;" width="1" /&gt;で紹介されていた方法。大味な感じもするが他に方法がわからないので従うことにする。&lt;br /&gt;&lt;br /&gt;- - - -&lt;br /&gt;逆にテキストフィールドへフォーカスをあてたい場合はどうすれば良いのだろうか。新規登録時にはタイトルのフィールドへ自動的にフォーカスをあてたい。&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-4038557688083073806?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/4038557688083073806/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/11/resignfirstresponder.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/4038557688083073806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/4038557688083073806'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/11/resignfirstresponder.html' title='キーボードの表示制御 - resignFirstResponder と透明なボタン'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZoUhefzk0CI/SwMQXIj8oJI/AAAAAAAADhA/koHMbL0d9Hg/s72-c/091118-0001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-6931247346289593958</id><published>2009-11-09T06:19:00.001+09:00</published><updated>2009-11-09T06:21:36.227+09:00</updated><title type='text'>追加UIの変更 - UIBarButtonSystemItemAdd</title><content type='html'>メモを追加するユーザインターフェイスを一般的なものに変える。右上に十字「＋」ボタンがでるやつ。メインのビューコントローラでボタンを追加する。&lt;br /&gt;&lt;br /&gt;こんな感じ。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;MainViewController.m&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)viewDidLoad {&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&amp;nbsp;:&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #742baa;"&gt;UIBarButtonItem&lt;/span&gt;&lt;span style="color: black;"&gt;* addButton = [[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;UIBarButtonItem&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;alloc&lt;span style="color: black;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;initWithBarButtonSystemItem&lt;span style="color: black;"&gt;:&lt;/span&gt;UIBarButtonSystemItemAdd&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; target&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;action&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;@selector&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: #32595d;"&gt;addMemo&lt;/span&gt;&lt;span style="color: black;"&gt;:)];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;navigationItem&lt;span style="color: black;"&gt;.&lt;/span&gt;rightBarButtonItem&lt;span style="color: black;"&gt; = addButton;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&amp;nbsp;[addButton &lt;span style="color: #410182;"&gt;release&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&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/_ZoUhefzk0CI/Svc1vCUUBMI/AAAAAAAADa4/aLeKS5Q-bOw/s1600-h/091109-0002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_ZoUhefzk0CI/Svc1vCUUBMI/AAAAAAAADa4/aLeKS5Q-bOw/s320/091109-0002.png" /&gt;&lt;/a&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/_ZoUhefzk0CI/Svc1pIz3unI/AAAAAAAADaw/pJhyM6mE7uA/s1600-h/091109-0002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ZoUhefzk0CI/Svc1pIz3unI/AAAAAAAADaw/pJhyM6mE7uA/s320/091109-0002.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-6931247346289593958?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/6931247346289593958/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/11/ui-uibarbuttonsystemitemadd.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/6931247346289593958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/6931247346289593958'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/11/ui-uibarbuttonsystemitemadd.html' title='追加UIの変更 - UIBarButtonSystemItemAdd'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZoUhefzk0CI/Svc1vCUUBMI/AAAAAAAADa4/aLeKS5Q-bOw/s72-c/091109-0002.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-5206118032024608135</id><published>2009-11-03T08:06:00.001+09:00</published><updated>2009-11-03T08:07:44.510+09:00</updated><title type='text'>メモの変更と追加</title><content type='html'>OneLiner開発続き。&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ZoUhefzk0CI/Su9ewjNBmDI/AAAAAAAADZA/nzII1FAsR_0/s1600-h/091103-0002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ZoUhefzk0CI/Su9ewjNBmDI/AAAAAAAADZA/nzII1FAsR_0/s320/091103-0002.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;今回はメモの変更と追加機能を追加する。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;メモの変更&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;まず変更から。変更画面用のコントローラ DetailViewController と Xibを用意する。&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ZoUhefzk0CI/Su9fB5thISI/AAAAAAAADZI/-dFsQEj9OJ4/s1600-h/091103-0004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_ZoUhefzk0CI/Su9fB5thISI/AAAAAAAADZI/-dFsQEj9OJ4/s320/091103-0004.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;DetailViewController.h&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #78482a;"&gt;#import &lt;/span&gt;&lt;uikit/uikit.h&gt;&lt;/uikit/uikit.h&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #78482a;"&gt;#import &lt;/span&gt;&lt;coredata/coredata.h&gt;&lt;/coredata/coredata.h&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #bc00a3;"&gt;@interface&lt;/span&gt; DetailViewController : UIViewController {&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;NSManagedObject&lt;span style="color: black;"&gt;* &lt;/span&gt;&lt;span style="color: #4f8187;"&gt;_managedObject&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;UITextField&lt;span style="color: black;"&gt; *&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;_textTitle&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #bc00a3;"&gt;@property&lt;/span&gt; (&lt;span style="color: #bc00a3;"&gt;nonatomic&lt;/span&gt;, &lt;span style="color: #bc00a3;"&gt;retain&lt;/span&gt;) NSManagedObject* managedObject;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #bc00a3; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;@property&lt;span style="color: black;"&gt; (&lt;/span&gt;nonatomic&lt;span style="color: black;"&gt;, &lt;/span&gt;retain&lt;span style="color: black;"&gt;) &lt;/span&gt;IBOutlet&lt;span style="color: black;"&gt; UITextField* textTitle;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #bc00a3; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;@end&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #bc00a3; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;最初のリスト画面で項目を選んだらこの変更用ビューをナビゲーションスタックへ pushして表示する。この時選択された行の NSManagedObject をへ渡してやる。この時も fetchedResultController から目的の行を簡単に取り出せる。&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;MainViewController.m&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)tableView:(&lt;span style="color: #742baa;"&gt;UITableView&lt;/span&gt; *)&lt;span style="color: #4f8187;"&gt;tableView&lt;/span&gt; didSelectRowAtIndexPath:(&lt;span style="color: #742baa;"&gt;NSIndexPath&lt;/span&gt; *)indexPath&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;detailViewController&lt;span style="color: black;"&gt;.&lt;/span&gt;managedObject&lt;span style="color: black;"&gt; =&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;[&lt;/span&gt;fetchedResultsController&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;objectAtIndexPath&lt;/span&gt;&lt;span style="color: black;"&gt;:indexPath];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;navigationController&lt;span style="color: black;"&gt;] &lt;/span&gt;pushViewController&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;detailViewController&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;          &lt;/span&gt; &amp;nbsp; &lt;span style="color: #410182;"&gt;animated&lt;/span&gt;:&lt;span style="color: #bc00a3;"&gt;YES&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;DetailViewController では Saveボタンが押されたら変更された内容をこの NSManagedObject へ反映する。反映後にナビゲーションスタックを popして元の画面へ戻る。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;DetailViewController.m&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)save:(&lt;span style="color: #bc00a3;"&gt;id&lt;/span&gt;)sender&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #4f8187;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;managedObject&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;setValue&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;textTitle&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #742baa;"&gt;text&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;forKey&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;@"title"&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSError&lt;/span&gt;* error = &lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;managedObject&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;managedObjectContext&lt;span style="color: black;"&gt;] &lt;/span&gt;save&lt;span style="color: black;"&gt;:&amp;amp;error];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;NSLog&lt;/span&gt;(&lt;span style="color: #d11a1c;"&gt;@"error=%@"&lt;/span&gt;, error);&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="color: #410182;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #742baa;"&gt;navigationController&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;popViewControllerAnimated&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;YES&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;変更の結果を UITableView へ反映させる必要がある。この目的で NSFetchedResultsControllerDelegate が用意されている。このデリゲートのメソッドを実装して NSManagedObjectContext の変更を UITableView へ反映させる。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;MainViewController.m &lt;nsfetchedresultscontrollerdelegate&gt;&lt;/nsfetchedresultscontrollerdelegate&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)controller:(&lt;span style="color: #742baa;"&gt;NSFetchedResultsController&lt;/span&gt; *)controller didChangeObject:(&lt;span style="color: #bc00a3;"&gt;id&lt;/span&gt;)anObject atIndexPath:(&lt;span style="color: #742baa;"&gt;NSIndexPath&lt;/span&gt; *)indexPath forChangeType:(&lt;span style="color: #742baa;"&gt;NSFetchedResultsChangeType&lt;/span&gt;)type newIndexPath:(&lt;span style="color: #742baa;"&gt;NSIndexPath&lt;/span&gt; *)newIndexPath {&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;switch&lt;/span&gt;(type) {&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;case&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;NSFetchedResultsChangeInsert&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #410182;"&gt;NSLog&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;@"NSFetchedResultsChangeInsert:"&lt;span style="color: black;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #742baa;"&gt;tableView&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;insertRowsAtIndexPaths&lt;span style="color: black;"&gt;:[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSArray&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;arrayWithObject&lt;span style="color: black;"&gt;:newIndexPath] &lt;/span&gt;withRowAnimation&lt;span style="color: black;"&gt;:&lt;/span&gt;UITableViewRowAnimationFade&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #bc00a3; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;/span&gt;break&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;case&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;NSFetchedResultsChangeDelete&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #410182;"&gt;NSLog&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;@"NSFetchedResultsChangeDelete:"&lt;span style="color: black;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #742baa;"&gt;tableView&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;deleteRowsAtIndexPaths&lt;span style="color: black;"&gt;:[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSArray&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;arrayWithObject&lt;span style="color: black;"&gt;:indexPath] &lt;/span&gt;withRowAnimation&lt;span style="color: black;"&gt;:&lt;/span&gt;UITableViewRowAnimationFade&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #bc00a3; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;/span&gt;break&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;case&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;NSFetchedResultsChangeUpdate&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #410182;"&gt;NSLog&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;@"NSFetchedResultsChangeUpdate:"&lt;span style="color: black;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;[&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt; &lt;span style="color: #32595d;"&gt;configureCell&lt;/span&gt;:[&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;.&lt;span style="color: #742baa;"&gt;tableView&lt;/span&gt; &lt;span style="color: #410182;"&gt;cellForRowAtIndexPath&lt;/span&gt;:indexPath] &lt;span style="color: #32595d;"&gt;atIndexPath&lt;/span&gt;:indexPath];&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #bc00a3; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;/span&gt;break&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;case&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;NSFetchedResultsChangeMove&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #410182;"&gt;NSLog&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;@"NSFetchedResultsChangeMove:"&lt;span style="color: black;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #742baa;"&gt;tableView&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;deleteRowsAtIndexPaths&lt;span style="color: black;"&gt;:[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSArray&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;arrayWithObject&lt;span style="color: black;"&gt;:indexPath] &lt;/span&gt;withRowAnimation&lt;span style="color: black;"&gt;:&lt;/span&gt;UITableViewRowAnimationFade&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;/span&gt;// Reloading the section inserts a new row and ensures that titles are updated appropriately.&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #742baa;"&gt;tableView&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;reloadSections&lt;span style="color: black;"&gt;:[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSIndexSet&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;indexSetWithIndex&lt;span style="color: black;"&gt;:newIndexPath.&lt;/span&gt;section&lt;span style="color: black;"&gt;] &lt;/span&gt;withRowAnimation&lt;span style="color: black;"&gt;:&lt;/span&gt;UITableViewRowAnimationFade&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #bc00a3; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt;&lt;/span&gt;break&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;変更、挿入、削除など操作の種類によって UITableView を変更する。上記はDevCenterで配布されているサンプルコード CoreDataBooks が参考になった。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;メモの追加&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;続いてメモの追加。トップ画面のテキストボックスへテキストを入力し、"POST"ボタンを押すと追加できるようにする。"POST"ボタンを post: アクションへ繋げて処理を書く。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;MainViewController.m&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;IBAction&lt;/span&gt;)post:(&lt;span style="color: #bc00a3;"&gt;id&lt;/span&gt;)sender&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #410182;"&gt;NSLog&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;@"Post message"&lt;span style="color: black;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSError&lt;/span&gt;* error = &lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;NSManagedObject&lt;span style="color: black;"&gt;* memo = [&lt;/span&gt;NSEntityDescription&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;insertNewObjectForEntityForName&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;@"Memo"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;              &lt;/span&gt;&amp;nbsp; &lt;/span&gt;inManagedObjectContext&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;managedObjectContext&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[memo &lt;span style="color: #410182;"&gt;setValue&lt;/span&gt;:&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;.&lt;span style="color: #4f8187;"&gt;textField&lt;/span&gt;.&lt;span style="color: #742baa;"&gt;text&lt;/span&gt; &lt;span style="color: #410182;"&gt;forKey&lt;/span&gt;:&lt;span style="color: #d11a1c;"&gt;@"title"&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[&lt;/span&gt;managedObjectContext&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;save&lt;/span&gt;&lt;span style="color: black;"&gt;:&amp;amp;error];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;if&lt;/span&gt; (error) {&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="color: #410182;"&gt;NSLog&lt;/span&gt;(&lt;span style="color: #d11a1c;"&gt;@"ERROR: %@"&lt;/span&gt;, error);&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;} &lt;span style="color: #bc00a3;"&gt;else&lt;/span&gt; {&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;textField&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #742baa;"&gt;text&lt;/span&gt;&lt;span style="color: black;"&gt; = &lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;@""&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;textField&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;resignFirstResponder&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;CoreData を使っていると簡単に追加できる。&lt;br /&gt;&lt;br /&gt;追加時のログを見ると INSERT が投げられているのがわかる。&lt;br /&gt;&lt;pre&gt;2009-11-03 07:29:57.705 OneLiner[15035:207] CoreData: sql: BEGIN EXCLUSIVE&lt;br /&gt;2009-11-03 07:29:57.707 OneLiner[15035:207] CoreData: sql: SELECT Z_MAX FROM Z_PRIMARYKEY WHERE Z_ENT = ?&lt;br /&gt;2009-11-03 07:29:57.708 OneLiner[15035:207] CoreData: sql: UPDATE Z_PRIMARYKEY SET Z_MAX = ? WHERE Z_ENT = ? AND Z_MAX = ?&lt;br /&gt;2009-11-03 07:29:57.709 OneLiner[15035:207] CoreData: sql: COMMIT&lt;br /&gt;2009-11-03 07:29:57.710 OneLiner[15035:207] CoreData: sql: BEGIN EXCLUSIVE&lt;br /&gt;2009-11-03 07:29:57.711 OneLiner[15035:207] CoreData: sql: INSERT INTO ZMEMO(Z_PK, Z_ENT, Z_OPT, ZTITLE, ZPHOTO) VALUES(?, ?, ?, ?, ?)&lt;br /&gt;2009-11-03 07:29:57.712 OneLiner[15035:207] CoreData: sql: COMMIT&lt;br /&gt;2009-11-03 07:29:57.714 OneLiner[15035:207] CoreData: sql: pragma page_count&lt;br /&gt;2009-11-03 07:29:57.714 OneLiner[15035:207] CoreData: annotation: sql execution time: 0.0006s&lt;br /&gt;2009-11-03 07:29:57.715 OneLiner[15035:207] CoreData: sql: pragma freelist_count&lt;br /&gt;2009-11-03 07:29:57.715 OneLiner[15035:207] CoreData: annotation: sql execution time: 0.0007s&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;UITableView のアクセサリ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;UITableViewの右側に表示されている "&amp;gt;" アイコン。参考本に従ってデリゲートメソッド &amp;nbsp;tableView:accessoryTypeForRowWithIndexPath: を実装すると、実行時に WARNING が表示された。&lt;br /&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px;"&gt;&lt;b&gt;2009-10-25 09:42:12.828 OneLiner[5235:207] WARNING: Using legacy cell layout due to delegate implementation of tableView:accessoryTypeForRowWithIndexPath: in &lt;mainviewcontroller: 0x3c0d740=""&gt;.&amp;nbsp; Please remove your implementation of this method and set the cell properties accessoryType and/or editingAccessoryType to move to the new cell layout behavior.&amp;nbsp; This method will no longer be called in a future release.&lt;/mainviewcontroller:&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px;"&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #742baa;"&gt;UITableViewCellAccessoryType&lt;/span&gt;)tableView:(&lt;span style="color: #742baa;"&gt;UITableView&lt;/span&gt; *)tableView accessoryTypeForRowWithIndexPath:(&lt;span style="color: #742baa;"&gt;NSIndexPath&lt;/span&gt; *)indexPath&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;return&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;UITableViewCellAccessoryDisclosureIndicator&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;br /&gt;&lt;span style="font-family: monospace; font-size: 12px; line-height: 15px; white-space: pre-wrap;"&gt;OS3.0からはデリゲート（テーブル単位）ではなくセル単位で指定できるようになった。UITableViewCell の accessoryTypeプロパティに設定してやれば良い。こんな感じ。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace; font-size: small;"&gt;&lt;span style="font-size: 12px; line-height: 15px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #742baa;"&gt;UITableViewCell&lt;/span&gt; *)tableView:(&lt;span style="color: #742baa;"&gt;UITableView&lt;/span&gt; *)tableView cellForRowAtIndexPath:(&lt;span style="color: #742baa;"&gt;NSIndexPath&lt;/span&gt; *)indexPath&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;static&lt;/span&gt; &lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt; *SimpleTableIdentifier = &lt;span style="color: #d11a1c;"&gt;@"SimpleTableIdentifier"&lt;/span&gt;;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;UITableViewCell&lt;/span&gt; *cell = [tableView &lt;span style="color: #410182;"&gt;dequeueReusableCellWithIdentifier&lt;/span&gt;:SimpleTableIdentifier];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;if&lt;/span&gt; (cell == &lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;) {&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;cell = [[[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;UITableViewCell&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;alloc&lt;span style="color: black;"&gt;] &lt;/span&gt;initWithStyle&lt;span style="color: black;"&gt;:&lt;/span&gt;UITableViewCellStyleDefault&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;   &lt;/span&gt; &amp;nbsp; &lt;/span&gt;reuseIdentifier&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #78482a;"&gt;kCellIdentifier&lt;/span&gt;&lt;span style="color: black;"&gt;] &lt;/span&gt;autorelease&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;&lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;b&gt;cell.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: #742baa;"&gt;&lt;b&gt;accessoryType&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;b&gt; = &lt;/b&gt;&lt;/span&gt;&lt;b&gt;UITableViewCellAccessoryDisclosureIndicator&lt;/b&gt;&lt;span style="color: black;"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSManagedObject&lt;/span&gt;* managedObject = [&lt;span style="color: #4f8187;"&gt;fetchedResultsController&lt;/span&gt; &lt;span style="color: #410182;"&gt;objectAtIndexPath&lt;/span&gt;:indexPath];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;cell.&lt;span style="color: #742baa;"&gt;textLabel&lt;/span&gt;.&lt;span style="color: #742baa;"&gt;text&lt;/span&gt; = [managedObject &lt;span style="color: #410182;"&gt;valueForKey&lt;/span&gt;:&lt;span style="color: #d11a1c;"&gt;@"title"&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;return&lt;/span&gt; cell;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: x-large;"&gt;UITableViewCell の初期化&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;UITableViewCell の生成も OS3.0から変わっていて従来の initWithFrame:reuseIdentifier: ではなく、initWithStyle:reuseIdentifier: を使う（前者は Deprecated扱い）。セル内に複数の文字列を表示することが容易になった。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;- - - -&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Menlo; font-weight: normal;"&gt;変更、追加直後は UITableViewの表示に反映されない。スクロールして再描画をさせると表示が更新される。原因わからず。&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Menlo; font-size: small;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-5206118032024608135?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/5206118032024608135/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/11/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/5206118032024608135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/5206118032024608135'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/11/blog-post.html' title='メモの変更と追加'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZoUhefzk0CI/Su9ewjNBmDI/AAAAAAAADZA/nzII1FAsR_0/s72-c/091103-0002.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-2611256627601426250</id><published>2009-10-24T14:41:00.000+09:00</published><updated>2009-10-24T14:41:18.937+09:00</updated><title type='text'>UINavigationController の導入</title><content type='html'>（前回）&lt;a href="http://xcatsan2.blogspot.com/2009/10/nsfetchedresultscontroller-coredata.html" target="_blank"&gt;Cocoa Touch の日々: NSFetchedResultsController を使って CoreData を表示する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;一覧画面で項目を選択するとその詳細画面を表示するようにしたい。今まではメインのウィンドウに１つのビューコントローラを直接割り当てていたが、UINavigationController を導入して、画面を切り替えるようにする。&lt;br /&gt;&lt;br /&gt;（参考）「はじめての iPhoneプログラミング」- 「第９章 ナビゲーション・コントローラとテーブルビュー」&lt;br /&gt;&lt;br /&gt;アプリケーションデリゲートのアウトレットを今までのビューコントローラから、UINavigationController へ変更する。&lt;br /&gt;&lt;br /&gt;OnLinerAppDelegate.h&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #d11a1c; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #78482a;"&gt;#import &lt;/span&gt;&lt;uikit/uikit.h&gt;&lt;/uikit/uikit.h&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #bc00a3;"&gt;@class&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;MainViewController&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #bc00a3;"&gt;@interface&lt;/span&gt; OneLinerAppDelegate : NSObject &lt;uiapplicationdelegate&gt; {&lt;/uiapplicationdelegate&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;UIWindow&lt;span style="color: black;"&gt; *&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;window&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: normal normal normal 11px/normal Menlo; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="text-decoration: line-through;"&gt;UINavigationController&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="text-decoration: line-through;"&gt;&amp;nbsp;*&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;&lt;span style="text-decoration: line-through;"&gt;mainViewController&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="text-decoration: line-through;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: normal normal normal 11px/normal Menlo; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;UINavigationController&lt;span style="color: black;"&gt;&amp;nbsp;*&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;navigationController&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #bc00a3; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;@property&lt;span style="color: black;"&gt; (&lt;/span&gt;nonatomic&lt;span style="color: black;"&gt;, &lt;/span&gt;retain&lt;span style="color: black;"&gt;) &lt;/span&gt;IBOutlet&lt;span style="color: black;"&gt; UIWindow *window;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #bc00a3;"&gt;&lt;span style="text-decoration: line-through;"&gt;@property&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: line-through;"&gt; (&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;&lt;span style="text-decoration: line-through;"&gt;nonatomic&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: line-through;"&gt;, &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;&lt;span style="text-decoration: line-through;"&gt;retain&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: line-through;"&gt;) &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;&lt;span style="text-decoration: line-through;"&gt;IBOutlet&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: line-through;"&gt; MainViewController* mainViewController;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Menlo; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: #bc00a3;"&gt;@property&lt;/span&gt;&amp;nbsp;(&lt;span style="color: #bc00a3;"&gt;nonatomic&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #bc00a3;"&gt;retain&lt;/span&gt;)&amp;nbsp;&lt;span style="color: #bc00a3;"&gt;IBOutlet&lt;/span&gt;&amp;nbsp;UINavigationController* navigationController;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #bc00a3; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;@end&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #bc00a3; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;InterfaceBuilder を開き Navigation Controller を追加し、One Liner AppDelegate のアウトレットに接続する。従来あった MainViewController は削除する。&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ZoUhefzk0CI/St4ql4vd-TI/AAAAAAAADTg/3AsC6tb6Zns/s1600-h/091021-0001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ZoUhefzk0CI/St4ql4vd-TI/AAAAAAAADTg/3AsC6tb6Zns/s640/091021-0001.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;続いて UINavigationController の rootViewController に MainViewController を指定する。方法は、MainWindow.xib をリスト表示して Navigation Controller の下に現れる View Controller を書き換える。&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ZoUhefzk0CI/St4qnkQ01KI/AAAAAAAADTo/_PdZgJi68bg/s1600-h/091021-0002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/St4qnkQ01KI/AAAAAAAADTo/_PdZgJi68bg/s640/091021-0002.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;後は AppDelegate の&amp;nbsp;&lt;span style="font-family: Menlo; font-size: 11px;"&gt;applicationDidFinishLaunching:&amp;nbsp;&lt;span style="font-family: Tokyo-Prop; font-size: medium;"&gt;このビューをウィンドウのビューとして設定すれば良い。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)applicationDidFinishLaunching:(&lt;span style="color: #742baa;"&gt;UIApplication&lt;/span&gt; *)application { &amp;nbsp; &lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;// Override point for customization after application launch&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[&lt;/span&gt;window&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;addSubview&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;navigationController&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: #410182;"&gt;view&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;window&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;makeKeyAndVisible&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&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://4.bp.blogspot.com/_ZoUhefzk0CI/SuKTQiSluwI/AAAAAAAADUg/5kJRyar6-aA/s1600-h/091024-0002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/SuKTQiSluwI/AAAAAAAADUg/5kJRyar6-aA/s320/091024-0002.png" width="214" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;画面上部にナビゲーション用のバー（"Root View Controller"）が表示されるようになる。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- - - -&lt;br /&gt;次は詳細画面を作り、そこで編集が行える様にする。&lt;br /&gt;（続く）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-2611256627601426250?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/2611256627601426250/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/10/uinavigationcontroller.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2611256627601426250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2611256627601426250'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/10/uinavigationcontroller.html' title='UINavigationController の導入'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZoUhefzk0CI/St4ql4vd-TI/AAAAAAAADTg/3AsC6tb6Zns/s72-c/091021-0001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-4317450673996322531</id><published>2009-10-13T06:36:00.000+09:00</published><updated>2009-10-13T06:36:53.216+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreData'/><title type='text'>NSFetchedResultsController を使って CoreData を表示する</title><content type='html'>iPhone Dev Center から CoreDataBooks というサンプルコードを入手してソースを読む。なるほど NSFetchedResultsController を使うと UITableView で CoreData を使うのが楽になりそうだ。&lt;br /&gt;&lt;br /&gt;CoreDataBooks の動作はこんな感じ。&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_ZoUhefzk0CI/StOd_q0UzQI/AAAAAAAADRw/pymRMY8sDpY/s1600-h/091013-0004+55%25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/StOd_q0UzQI/AAAAAAAADRw/pymRMY8sDpY/s320/091013-0004+55%25.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_ZoUhefzk0CI/StOeBIKKQbI/AAAAAAAADR4/Mglwc_2g98s/s1600-h/091013-0005+55%25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/StOeBIKKQbI/AAAAAAAADR4/Mglwc_2g98s/s320/091013-0005+55%25.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_ZoUhefzk0CI/StOeDM4vNCI/AAAAAAAADSA/LGnBZLG5zYU/s1600-h/091013-0006+55%25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ZoUhefzk0CI/StOeDM4vNCI/AAAAAAAADSA/LGnBZLG5zYU/s320/091013-0006+55%25.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;リストに詳細表示、それと項目の編集を行う３つのビューから構成される。データの格納に CoreData を採用していて UITableView との連携に NSFetchedResultsController を使っている。&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;NSFetchedResultsController の使い方を理解するためにこのコードを参考にしつつ、（テーブルが一つで）構造が単純な OneLiner を NSFetcedResultsController を使うバージョンに書き換えてみる。&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;b&gt;&lt;i&gt;MainViewController.h&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #bc00a3;"&gt;@interface&lt;/span&gt; MainViewController : UIViewController {&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;NSPersistentStoreCoordinator&lt;span style="color: black;"&gt;* &lt;/span&gt;&lt;span style="color: #4f8187;"&gt;persistentStoreCoordinator&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;NSManagedObjectContext&lt;span style="color: black;"&gt;* &lt;/span&gt;&lt;span style="color: #4f8187;"&gt;managedObjectContext&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;NSFetchedResultsController&lt;span style="color: black;"&gt;* &lt;/span&gt;&lt;span style="color: #4f8187;"&gt;fetchedResultsController&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;メンバ変数に NSFechedResultsController を追加。&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;b&gt;&lt;i&gt;MainViewController.m&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)setupFetchedResultsController&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;// [1] Persistent Store Coordinator&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;persistentStoreCoordinator&lt;/span&gt;&lt;span style="color: black;"&gt; = [[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSPersistentStoreCoordinator&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;alloc&lt;span style="color: black;"&gt;] &lt;/span&gt;initWithManagedObjectModel&lt;span style="color: black;"&gt;:[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSManagedObjectModel&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;mergedModelFromBundles&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;&lt;span style="color: black;"&gt;]];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSError&lt;/span&gt;* error = &lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt;* filepath = [&lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt; &lt;span style="color: #410182;"&gt;stringWithFormat&lt;/span&gt;:&lt;span style="color: #d11a1c;"&gt;@"%@/%@"&lt;/span&gt;,&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;      &lt;/span&gt;&amp;nbsp; [&lt;/span&gt;NSSearchPathForDirectoriesInDomains&lt;span style="color: black;"&gt;(&lt;/span&gt;NSDocumentDirectory&lt;span style="color: black;"&gt;, &lt;/span&gt;NSUserDomainMask&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;YES&lt;/span&gt;&lt;span style="color: black;"&gt;) &lt;/span&gt;objectAtIndex&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #3900d9;"&gt;0&lt;/span&gt;&lt;span style="color: black;"&gt;],&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;      &lt;/span&gt;&amp;nbsp; &lt;span style="color: #d11a1c;"&gt;@"memo.db"&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[&lt;/span&gt;persistentStoreCoordinator&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;addPersistentStoreWithType&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSSQLiteStoreType&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;           &lt;/span&gt; &lt;span style="color: #410182;"&gt;configuration&lt;/span&gt;:&lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;             &lt;/span&gt; &amp;nbsp; &lt;span style="color: #410182;"&gt;URL&lt;/span&gt;:[&lt;span style="color: #742baa;"&gt;NSURL&lt;/span&gt; &lt;span style="color: #410182;"&gt;fileURLWithPath&lt;/span&gt;:filepath]&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;            &lt;/span&gt; &amp;nbsp; &lt;span style="color: #410182;"&gt;options&lt;/span&gt;:&lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;             &lt;/span&gt; &lt;span style="color: #410182;"&gt;error&lt;/span&gt;:&amp;amp;error];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;if&lt;/span&gt; (error) {&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="color: #410182;"&gt;NSLog&lt;/span&gt;(&lt;span style="color: #d11a1c;"&gt;@"[1] %@"&lt;/span&gt;, error);&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;// [2] Managed Object Context&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;managedObjectContext&lt;/span&gt;&lt;span style="color: black;"&gt; = [[&lt;/span&gt;NSManagedObjectContext&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;alloc&lt;/span&gt;&lt;span style="color: black;"&gt;] &lt;/span&gt;&lt;span style="color: #410182;"&gt;init&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;[&lt;/span&gt;managedObjectContext&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;setPersistentStoreCoordinator&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;persistentStoreCoordinator&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;// [3] Fetched Results Controller&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;// Fetch Request&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;NSFetchRequest&lt;span style="color: black;"&gt;* request = [[&lt;/span&gt;NSFetchRequest&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;alloc&lt;/span&gt;&lt;span style="color: black;"&gt;] &lt;/span&gt;&lt;span style="color: #410182;"&gt;init&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[request &lt;/span&gt;setEntity&lt;span style="color: black;"&gt;:[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSEntityDescription&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;entityForName&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;@"Memo"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;        &lt;/span&gt; &amp;nbsp; &lt;/span&gt;inManagedObjectContext&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;managedObjectContext&lt;/span&gt;&lt;span style="color: black;"&gt;]];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[request &lt;/span&gt;setIncludesSubentities&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;NO&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;// Sort Descriptor&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSSortDescriptor&lt;/span&gt;* sortDescriptor =&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[[&lt;/span&gt;NSSortDescriptor&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;alloc&lt;/span&gt;&lt;span style="color: black;"&gt;] &lt;/span&gt;&lt;span style="color: #410182;"&gt;initWithKey&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;@"title"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;        &lt;/span&gt;&lt;span style="color: #410182;"&gt;ascending&lt;/span&gt;:&lt;span style="color: #bc00a3;"&gt;YES&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[request &lt;/span&gt;setSortDescriptors&lt;span style="color: black;"&gt;:[&lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSArray&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;arrayWithObject&lt;span style="color: black;"&gt;:sortDescriptor]];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #008900; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;// Fetched Result Controller&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;fetchedResultsController&lt;span style="color: black;"&gt; =&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;[[&lt;/span&gt;NSFetchedResultsController&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;alloc&lt;/span&gt;&lt;span style="color: black;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt; &lt;/span&gt;initWithFetchRequest&lt;span style="color: black;"&gt;:request&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt; &lt;/span&gt;managedObjectContext&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #4f8187;"&gt;managedObjectContext&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt; &lt;/span&gt;sectionNameKeyPath&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;    &lt;/span&gt;&lt;/span&gt;cacheName&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #d11a1c;"&gt;@"Root"&lt;/span&gt;&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[sortDescriptor &lt;span style="color: #410182;"&gt;release&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[request &lt;span style="color: #410182;"&gt;release&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Menlo; font-size: small;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;セットアップ用のメソッドを用意し、ここで NSPersistentStoreCoordinator, NSManagedObjectContext, NSFectedResultsController の３つのインスタンスを用意する。NSFetchedController には検索条件、ソート条件をあらかじめ渡しておく。&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #bc00a3;"&gt;void&lt;/span&gt;)viewDidLoad {&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #410182; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;super&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;viewDidLoad&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #32595d; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;[&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;self&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;setupFetchedResultsController&lt;span style="color: black;"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSError&lt;/span&gt;* error = &lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; (![&lt;/span&gt;fetchedResultsController&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;performFetch&lt;/span&gt;&lt;span style="color: black;"&gt;:&amp;amp;error]) {&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="color: #410182;"&gt;NSLog&lt;/span&gt;(&lt;span style="color: #d11a1c;"&gt;@"%@"&lt;/span&gt;, error);&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&amp;nbsp; :&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;View のロード時にセットアップと読み込み(performFetch)を実行する。&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;続いて DataSource のコーディング。&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #742baa;"&gt;NSInteger&lt;/span&gt;)tableView:(&lt;span style="color: #742baa;"&gt;UITableView&lt;/span&gt; *)table numberOfRowsInSection:(&lt;span style="color: #742baa;"&gt;NSInteger&lt;/span&gt;)section&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;id&lt;/span&gt;&lt;span style="color: black;"&gt; &amp;lt;&lt;/span&gt;NSFetchedResultsSectionInfo&lt;span style="color: black;"&gt;&amp;gt; sectionInfo =&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4f8187; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;[[&lt;/span&gt;fetchedResultsController&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;sections&lt;/span&gt;&lt;span style="color: black;"&gt;] &lt;/span&gt;&lt;span style="color: #410182;"&gt;objectAtIndex&lt;/span&gt;&lt;span style="color: black;"&gt;:section];&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;return&lt;/span&gt; [sectionInfo &lt;span style="color: #410182;"&gt;numberOfObjects&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;- (&lt;span style="color: #742baa;"&gt;UITableViewCell&lt;/span&gt; *)tableView:(&lt;span style="color: #742baa;"&gt;UITableView&lt;/span&gt; *)tableView cellForRowAtIndexPath:(&lt;span style="color: #742baa;"&gt;NSIndexPath&lt;/span&gt; *)indexPath&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;static&lt;/span&gt; &lt;span style="color: #742baa;"&gt;NSString&lt;/span&gt; *SimpleTableIdentifier = &lt;span style="color: #d11a1c;"&gt;@"SimpleTableIdentifier"&lt;/span&gt;;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;UITableViewCell&lt;/span&gt; *cell = [tableView &lt;span style="color: #410182;"&gt;dequeueReusableCellWithIdentifier&lt;/span&gt;:SimpleTableIdentifier];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;if&lt;/span&gt; (cell == &lt;span style="color: #bc00a3;"&gt;nil&lt;/span&gt;) {&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #742baa; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;cell = [[[&lt;/span&gt;UITableViewCell&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #410182;"&gt;alloc&lt;/span&gt;&lt;span style="color: black;"&gt;] &lt;/span&gt;&lt;span style="color: #410182;"&gt;initWithFrame&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;CGRectZero&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt;         &lt;/span&gt; &amp;nbsp; &lt;span style="color: #410182;"&gt;reuseIdentifier&lt;/span&gt;:SimpleTableIdentifier] &lt;span style="color: #410182;"&gt;autorelease&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #742baa;"&gt;NSManagedObject&lt;/span&gt;* managedObject = [&lt;span style="color: #4f8187;"&gt;fetchedResultsController&lt;/span&gt; &lt;span style="color: #410182;"&gt;objectAtIndexPath&lt;/span&gt;:indexPath];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;cell.&lt;span style="color: #742baa;"&gt;textLabel&lt;/span&gt;.&lt;span style="color: #742baa;"&gt;text&lt;/span&gt; = [managedObject &lt;span style="color: #410182;"&gt;valueForKey&lt;/span&gt;:&lt;span style="color: #d11a1c;"&gt;@"title"&lt;/span&gt;];&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #bc00a3;"&gt;return&lt;/span&gt; cell;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="font-size: medium;"&gt;前回までは呼出される毎に検索をかけていたが、その部分を NSFetchedController にまかせることができるのですっきりした。UITableView 向けにつくられているので Section や NSIndexPath をそのまま扱えるのが便利。&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="font-size: medium;"&gt;実行してみよう。&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ZoUhefzk0CI/StOg-zsCkeI/AAAAAAAADSI/VAFy3UOcPFc/s1600-h/091013-0007+55%25.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/_ZoUhefzk0CI/StOg-zsCkeI/AAAAAAAADSI/VAFy3UOcPFc/s320/091013-0007+55%25.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="font-size: medium;"&gt;動いた。&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="font-size: medium;"&gt;コンソールを見るとSQLが飛んでいるのは１回のみ（あたりまえだが）。&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;pre&gt;[Session started at 2009-10-13 06:13:39 +0900.]&lt;br /&gt;2009-10-13 06:13:44.494 OneLiner[8886:207] CoreData: annotation: Connecting to sqlite database file at "/Users/hashi/Library/Application Support/iPhone Simulator/User/Applications/BF9B0A56-4CC4-428A-AB2B-FD1E20BDEAAD/Documents/memo.db"&lt;br /&gt;2009-10-13 06:13:44.500 OneLiner[8886:207] CoreData: sql: pragma cache_size=1000&lt;br /&gt;2009-10-13 06:13:44.501 OneLiner[8886:207] CoreData: sql: SELECT Z_VERSION, Z_UUID, Z_PLIST FROM Z_METADATA&lt;br /&gt;2009-10-13 06:13:44.549 OneLiner[8886:207] CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZTITLE, t0.ZPHOTO FROM ZMEMO t0 ORDER BY t0.ZTITLE&lt;br /&gt;2009-10-13 06:13:44.551 OneLiner[8886:207] CoreData: annotation: sql connection fetch time: 0.0019s&lt;br /&gt;2009-10-13 06:13:44.552 OneLiner[8886:207] CoreData: annotation: total fetch execution time: 0.0032s for 18 rows.&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;SQLiteから取得したデータの管理を NSFetechedResultsController がやってくれるのでこれはいい。&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-4317450673996322531?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/4317450673996322531/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/10/nsfetchedresultscontroller-coredata.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/4317450673996322531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/4317450673996322531'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/10/nsfetchedresultscontroller-coredata.html' title='NSFetchedResultsController を使って CoreData を表示する'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZoUhefzk0CI/StOd_q0UzQI/AAAAAAAADRw/pymRMY8sDpY/s72-c/091013-0004+55%25.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-4401633559541068081</id><published>2009-10-07T06:04:00.005+09:00</published><updated>2009-10-07T06:04:00.223+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreData'/><title type='text'>UITableViewでCoreDataを効果的に扱える NSFetchedResultsController</title><content type='html'>MacOSX 版の Core Data のメソッド一覧（Core Data Framework Reference）と、iPhone版のそれを見比べると iPhone版の方がメソッドが多い事に気がついた。&lt;br /&gt;&lt;br /&gt;一つは NSFetchedResultsController。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZoUhefzk0CI/SsaWgdqdZSI/AAAAAAAADO4/7KFeAlRNGps/s1600-h/091003-0010.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 186px; height: 189px;" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/SsaWgdqdZSI/AAAAAAAADO4/7KFeAlRNGps/s400/091003-0010.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5388159488658072866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;それとプロトコルが２つ。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZoUhefzk0CI/SsaVZFbG-YI/AAAAAAAADOw/i5wmeQ2tmPA/s1600-h/091003-0009.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 215px; height: 71px;" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/SsaVZFbG-YI/AAAAAAAADOw/i5wmeQ2tmPA/s400/091003-0009.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5388158262380525954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;NSFetechedResultsController の Overview によれば&lt;br /&gt;&lt;blockquote&gt;This class is intended to efficiently manage the results returned from a Core Data fetch request to provide data for a UITableView object.&lt;/blockquote&gt; とある。&lt;br /&gt;&lt;br /&gt;こんなクラスが追加されていたのか。&lt;br /&gt;前回までのプログラミングで UITableView と CoreData を組み合わせるのは手間がかかるので何かうまい方法がないかと探していたが、やはりあったようだ。&lt;br /&gt;&lt;br /&gt;サンプルもあるようなのでこれらを試してみよう。&lt;br /&gt;（続く）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-4401633559541068081?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/4401633559541068081/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/10/uitableviewcoredata-nsfetchedresultscon.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/4401633559541068081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/4401633559541068081'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/10/uitableviewcoredata-nsfetchedresultscon.html' title='UITableViewでCoreDataを効果的に扱える NSFetchedResultsController'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZoUhefzk0CI/SsaWgdqdZSI/AAAAAAAADO4/7KFeAlRNGps/s72-c/091003-0010.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-5094308004359302869</id><published>2009-10-05T06:55:00.007+09:00</published><updated>2009-10-05T22:18:22.420+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreData'/><title type='text'>CoreData で発行されている SQL をデバッグ出力する</title><content type='html'>&lt;a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CoreData/Articles/cdPerformance.html#//apple_ref/doc/uid/TP40003468" target="_blank"&gt;Mac Dev Center: Core Data Programming Guide: Core Data Performance&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;この中の "Analyzing Fetch Behavior with SQLite" に、コマンドライン引数に次を指定すると CoreDataから SQLite へ発行される SQL をデバッグ出力できるとの記述があった。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;-com.apple.CoreData.SQLDebug 1&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;やってみよう。&lt;br /&gt;&lt;br /&gt;実行可能ファイルの設定を開く。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZoUhefzk0CI/SsaRkLNsP7I/AAAAAAAADOo/z3egUxBuWLc/s1600-h/091003-0006+60%25.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://1.bp.blogspot.com/_ZoUhefzk0CI/SsaRkLNsP7I/AAAAAAAADOo/z3egUxBuWLc/s400/091003-0006+60%25.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5388154054866911154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;「起動時に渡される引数」に上記の引数を追加する。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZoUhefzk0CI/SsaRjg-JoII/AAAAAAAADOg/mh27nGzY4AE/s1600-h/091003-0008.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 279px; height: 400px;" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/SsaRjg-JoII/AAAAAAAADOg/mh27nGzY4AE/s400/091003-0008.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5388154043527438466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;実行する。以下、例。&lt;br /&gt;&lt;pre&gt;2009-10-05 06:50:48.557 OneLiner[1202:207] CoreData: sql: SELECT COUNT(*) FROM ZMEMO t0 &lt;br /&gt;2009-10-05 06:50:48.558 OneLiner[1202:207] CoreData: annotation: total count request execution time: 0.0022s for count of 16.&lt;br /&gt;2009-10-05 06:50:48.560 OneLiner[1202:207] CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZTITLE, t0.ZPHOTO FROM ZMEMO t0 ORDER BY t0.ZTITLE&lt;br /&gt;2009-10-05 06:50:48.561 OneLiner[1202:207] CoreData: annotation: sql connection fetch time: 0.0010s&lt;br /&gt;2009-10-05 06:50:48.562 OneLiner[1202:207] CoreData: annotation: total fetch execution time: 0.0023s for 16 rows.&lt;br /&gt;2009-10-05 06:50:48.564 OneLiner[1202:207] CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZTITLE, t0.ZPHOTO FROM ZMEMO t0 ORDER BY t0.ZTITLE&lt;br /&gt;:&lt;br /&gt;:&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これはいいな。&lt;br /&gt;デバッグだけでなくパフォーマンスチューニングするのにこれは役立つ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-5094308004359302869?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/5094308004359302869/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/10/coredata-sql.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/5094308004359302869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/5094308004359302869'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/10/coredata-sql.html' title='CoreData で発行されている SQL をデバッグ出力する'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZoUhefzk0CI/SsaRkLNsP7I/AAAAAAAADOo/z3egUxBuWLc/s72-c/091003-0006+60%25.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-7506937832943694564</id><published>2009-10-03T08:43:00.000+09:00</published><updated>2009-10-03T08:43:20.503+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreData'/><title type='text'>CoreData のデータを UITableView で表示する</title><content type='html'>（前回）&lt;a href="http://xcatsan2.blogspot.com/2009/09/coredata_30.html" target="_blank"&gt;Cocoa Touch の日々: CoreData - テーブルの件数を取得する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;件数が取得できたので今度はデータを取得し、これを UITableView へ表示する。&lt;br /&gt;&lt;br /&gt;CoreDataからのデータ取得方法は Mac Dev Center のガイドを参考にした。&lt;br /&gt;&lt;a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html#//apple_ref/doc/uid/TP40002484" target="_blank"&gt;Mac Dev Center: Core Data Programming Guide: Fetching Managed Objects&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;データ取得ができたのでこれを UITableView へ表示する。&lt;br /&gt;まず DataSource メソッドの実装。&lt;br /&gt;&lt;br /&gt;件数は前回作成したメソッドを使用する。&lt;br /&gt;&lt;pre&gt;- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section&lt;br /&gt;{&lt;br /&gt; return [self getCount];&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;１行毎のデータは新規に -[getEntityAtIndex:] を用意し、これを呼出す。&lt;br /&gt;&lt;pre&gt;- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath&lt;br /&gt;{&lt;br /&gt; static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";&lt;br /&gt; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];&lt;br /&gt; if (cell == nil) {&lt;br /&gt;  cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero&lt;br /&gt;            reuseIdentifier:SimpleTableIdentifier] autorelease];&lt;br /&gt; }&lt;br /&gt; NSUInteger row = [indexPath row];&lt;br /&gt; NSManagedObject* managedObject = [self getEntityAtIndex:row];&lt;br /&gt; cell.textLabel.text = [managedObject valueForKey:@"title"];&lt;br /&gt; return cell;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;なお UITableViewCell の textプロパティは iPhoneOS3.0よりDeprecated となっていた。その代わりに textLabelプロパティを使用する。&lt;br /&gt;&lt;br /&gt;データ１行を取得するメソッドの実装。&lt;br /&gt;&lt;pre&gt;- (NSManagedObject*)getEntityAtIndex:(NSUInteger)index&lt;br /&gt;{&lt;br /&gt; NSFetchRequest* request = [[NSFetchRequest alloc] init];&lt;br /&gt; [request setEntity:[NSEntityDescription entityForName:@"Memo"&lt;br /&gt;           inManagedObjectContext:managedObjectContext]];&lt;br /&gt; [request setIncludesSubentities:NO];&lt;br /&gt;&lt;br /&gt; NSSortDescriptor* sortDescriptor =&lt;br /&gt;  [[NSSortDescriptor alloc] initWithKey:@"title"&lt;br /&gt;         ascending:YES];&lt;br /&gt; [request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];&lt;br /&gt; [sortDescriptor release];&lt;br /&gt; &lt;br /&gt; NSError* error = nil;&lt;br /&gt; NSArray *array = [managedObjectContext executeFetchRequest:request error:&amp;error];&lt;br /&gt; if (array == nil) {&lt;br /&gt;  NSLog(@"%@", error);&lt;br /&gt;  return nil;&lt;br /&gt; }&lt;br /&gt; return [array objectAtIndex:index];&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;毎回全件持ってくるので効率が非常に悪いがとりあえずは動く事を優先させる（この辺りは動いた後に見直そう）。&lt;br /&gt;&lt;br /&gt;実行してみる。&lt;br /&gt;&lt;br /&gt;出た。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/_ZoUhefzk0CI/SsaOPch125I/AAAAAAAADOE/0WTMc6G_hNw/s800/091003-0005%2036%25.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 154px; height: 278px;" src="http://lh5.ggpht.com/_ZoUhefzk0CI/SsaOPch125I/AAAAAAAADOE/0WTMc6G_hNw/s800/091003-0005%2036%25.png" border="0" alt="" /&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;a href="http://www.amazon.co.jp/gp/product/4797354011?ie=UTF8&amp;tag=cocoatouch-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=4797354011"&gt;はじめてのiPhoneプログラミング&lt;/a&gt;&lt;img border="0" width="1" alt="" style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=cocoatouch-22&amp;l=as2&amp;o=9&amp;a=4797354011" height="1"/&gt;&lt;br /&gt;&lt;br /&gt;+++++ 関連情報 +++++&lt;br /&gt;&lt;a href="http://xcatsan2.blogspot.com/2009/09/coredata.html" target="_blank"&gt;Cocoa Touch の日々: CoreDataを使う&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xcatsan2.blogspot.com/2009/08/blog-post_18.html" target="_blank"&gt;Cocoa Touch の日々: 習作アプリ作成開始〜「一行メモ」&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-7506937832943694564?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/7506937832943694564/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/10/coredata-uitableview.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/7506937832943694564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/7506937832943694564'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/10/coredata-uitableview.html' title='CoreData のデータを UITableView で表示する'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ZoUhefzk0CI/SsaOPch125I/AAAAAAAADOE/0WTMc6G_hNw/s72-c/091003-0005%2036%25.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-4506818874808083520</id><published>2009-09-30T06:28:00.008+09:00</published><updated>2009-09-30T06:40:32.279+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreData'/><title type='text'>CoreData - テーブルの件数を取得する</title><content type='html'>（前回からの続き：&lt;a href="http://xcatsan2.blogspot.com/2009/09/coredata.html" target="_blank"&gt;Cocoa Touch の日々: CoreDataを使う&lt;/a&gt;）&lt;br /&gt;&lt;br /&gt;これから CoreData のデータを UITableView へ表示させる。UITableView へデータを表示するには最低２つの DataSourceメソッドを実装する必要がある。&lt;br /&gt;&lt;pre&gt;- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section;&lt;br /&gt;- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これらのメソッドを実装するにあたり、まずはテーブルの件数を取得しよう。&lt;br /&gt;&lt;br /&gt;ネットで探してみると "Effecient way to count entities" という記事が見つかった。&lt;br /&gt;（参考）&lt;a href="http://stackoverflow.com/questions/1134289/cocoa-coredata-effiecient-way-to-count-entities" target="_blank"&gt;Cocoa CoreData effiecient way to count entities! - Stack Overflow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;これを参考に件数取得のコードを書いてみた（というかそのまんまだが）。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;- (NSUInteger)getCount&lt;br /&gt;{&lt;br /&gt; NSFetchRequest* request = [[NSFetchRequest alloc] init];&lt;br /&gt; [request setEntity:[NSEntityDescription entityForName:@"Memo"&lt;br /&gt;           inManagedObjectContext:managedObjectContext]];&lt;br /&gt; [request setIncludesSubentities:NO];&lt;br /&gt; &lt;br /&gt; NSError* error = nil;&lt;br /&gt; NSUInteger count = [managedObjectContext countForFetchRequest:request error:&amp;error];&lt;br /&gt; if (count == NSNotFound) {&lt;br /&gt;  count = 0;&lt;br /&gt; }&lt;br /&gt; [request release];&lt;br /&gt; &lt;br /&gt; return count;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;managedObjectContext はメンバ変数として既に用意してあるものとする。&lt;br /&gt;＃NSError 変数は以前&lt;a href="http://xcatsan.blogspot.com/2009/09/excbadaccess.html" target="_blank"&gt;痛い目&lt;/a&gt;にあっているので必ず初期化しておく。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;もし条件で絞り込みたい場合は Predicateなどが使える。&lt;br /&gt;（参考）&lt;a href="http://homepage.mac.com/xcatsan/cocoa-days/2005-10.html#20051010_1" target="_blank"&gt;Cocoaの日々 - 2005年10月&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-4506818874808083520?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/4506818874808083520/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/09/coredata_30.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/4506818874808083520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/4506818874808083520'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/09/coredata_30.html' title='CoreData - テーブルの件数を取得する'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-924652390740530411</id><published>2009-09-02T06:05:00.006+09:00</published><updated>2009-09-02T06:23:40.439+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreData'/><title type='text'>CoreDataを使う</title><content type='html'>iPhone3.0から CoreData が使えるとのことだったので OneLiner で使ってみることにする。CoreDataは随分昔に MacOSXで使ったことがあるのでそのときの記事を引っ張りだしてきてコードを書いてみた。&lt;br /&gt;&lt;br /&gt;Cocoaの日々（旧）&lt;br /&gt;&lt;a href="http://homepage.mac.com/xcatsan/cocoa-days/2005-09.html#20050918_1" target="_blank"&gt;Core Data その1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;CoreDataは永続性スタックと呼ばれるいくつかのクラスで構成されていて、利用時にはこれらのインスタンスを用意する必要がある。&lt;br /&gt;&lt;br /&gt;（過去記事から引用）&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZoUhefzk0CI/Sp2N8tlO8sI/AAAAAAAADCE/IADFBi3Lxjc/s1600-h/coredata1-fig4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 396px; height: 400px;" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/Sp2N8tlO8sI/AAAAAAAADCE/IADFBi3Lxjc/s400/coredata1-fig4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5376609604317672130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;コードはこんな感じ（とりあえず awakeFromNib に書いてみた）。&lt;br /&gt;&lt;pre&gt;- (void)awakeFromNib&lt;br /&gt;{&lt;br /&gt; persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]&lt;br /&gt;              initWithManagedObjectModel:[NSManagedObjectModel mergedModelFromBundles:nil]];&lt;br /&gt; &lt;br /&gt; managedObjectContext = [[NSManagedObjectContext alloc] init];&lt;br /&gt; [managedObjectContext setPersistentStoreCoordinator:persistentStoreCoordinator];&lt;br /&gt; &lt;br /&gt; NSError* error = nil;&lt;br /&gt; NSString* filepath = [NSString stringWithFormat:@"%@/%@",&lt;br /&gt;   [NSSearchPathForDirectoriesInDomains(&lt;br /&gt;                            NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0],&lt;br /&gt;        @"memo.db"];&lt;br /&gt; &lt;br /&gt; [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType&lt;br /&gt;            configuration:nil&lt;br /&gt;                URL:[NSURL fileURLWithPath:filepath]&lt;br /&gt;               options:nil&lt;br /&gt;              error:&amp;error];&lt;br /&gt; NSLog(@"1:%@", error);&lt;br /&gt; &lt;br /&gt; NSManagedObject* memo =&lt;br /&gt;  [NSEntityDescription insertNewObjectForEntityForName:@"Memo"&lt;br /&gt;           inManagedObjectContext:managedObjectContext];&lt;br /&gt; [memo setValue:@"hello" forKey:@"title"];&lt;br /&gt; [memo setValue:@"photo1.png" forKey:@"photo"];&lt;br /&gt; [managedObjectContext save:&amp;error];&lt;br /&gt; NSLog(@"2:%@", error);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;永続性スタックである NSPersistentStoreCoordinator, NSManagedObjectContext を用意し、必要な処理を加えていけば良い。以前の記事でも解説されているが、前者はモデル（いわゆるスキーマ）と（persistent object storeを通じて）DBファイルを扱い、後者はDBに対する検索、追加、変更、削除などのプログラミングのインターフェイスを提供している。今回永続化タイプは SQLite を選んだ。&lt;br /&gt;&lt;br /&gt;モデルは Xcodeの「新規ファイル...」から作成できる。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZoUhefzk0CI/Sp2QIjt-TKI/AAAAAAAADCM/WvJV1SrSLK0/s1600-h/090902-0003.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 307px;" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/Sp2QIjt-TKI/AAAAAAAADCM/WvJV1SrSLK0/s400/090902-0003.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5376612006851660962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;今回は Memo というエンティティを１つ用意した。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZoUhefzk0CI/Sp2N8JsH27I/AAAAAAAADB8/OYXDGNWC6rE/s1600-h/090902-0001.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 381px;" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/Sp2N8JsH27I/AAAAAAAADB8/OYXDGNWC6rE/s400/090902-0001.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5376609594682891186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;さて実行してみよう。所定の場所に memo.db が作成されて（サンプルコードで挿入した）値が格納されているのがわかる。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZoUhefzk0CI/Sp2N76_Y6-I/AAAAAAAADB0/3ZgP0nNSDl0/s1600-h/090902-0002.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 387px; height: 196px;" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/Sp2N76_Y6-I/AAAAAAAADB0/3ZgP0nNSDl0/s400/090902-0002.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5376609590737169378" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-924652390740530411?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/924652390740530411/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/09/coredata.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/924652390740530411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/924652390740530411'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/09/coredata.html' title='CoreDataを使う'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZoUhefzk0CI/Sp2N8tlO8sI/AAAAAAAADCE/IADFBi3Lxjc/s72-c/coredata1-fig4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-5495504277521867908</id><published>2009-09-01T05:25:00.007+09:00</published><updated>2009-09-01T05:45:13.350+09:00</updated><title type='text'>Snow Leopard 付属の Xcode3.2 アップグレードすると iPhone開発ができなくなった</title><content type='html'>Snow Leopard 付属の Xcode3.2 アップグレードすると iPhone開発ができなくなった。iPhoneを接続してもオーガナイザになにも表示されない。&lt;br /&gt;&lt;br /&gt;ネットを調べると Snow Leopard用の iPhone SDK が出ているとこのことだった。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.apple.com/iphone/" target="_blank"&gt;iPhone Dev Center&lt;/a&gt;（要ログイン） へログインし、Downloadsから "iPhone SDK (Snow Leopard)" を選びダウンロードしインストールする。&lt;br /&gt;&lt;br /&gt;すると iPhoneが認識され、無事にビルドすることができた。&lt;br /&gt;&lt;br /&gt;- - - -&lt;br /&gt;&lt;br /&gt;XCode3.2 ではフォントが変わった。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZoUhefzk0CI/SpwyZZqQiiI/AAAAAAAADBc/L4gFXUgKU_Q/s1600-h/090901-0001.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/SpwyZZqQiiI/AAAAAAAADBc/L4gFXUgKU_Q/s400/090901-0001.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5376227467139779106" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-5495504277521867908?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/5495504277521867908/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/09/snow-leopard-xcode32-iphone.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/5495504277521867908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/5495504277521867908'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/09/snow-leopard-xcode32-iphone.html' title='Snow Leopard 付属の Xcode3.2 アップグレードすると iPhone開発ができなくなった'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZoUhefzk0CI/SpwyZZqQiiI/AAAAAAAADBc/L4gFXUgKU_Q/s72-c/090901-0001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-7810126844452278268</id><published>2009-08-21T05:38:00.000+09:00</published><updated>2009-08-21T05:38:00.171+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='習作アプリ'/><title type='text'>"Window-based Application" から組み立ててみる</title><content type='html'>一行メモの開発に入る。&lt;br /&gt;&lt;br /&gt;新規プロジェクトを作成し "Window-based Applicatoin" を選択する。&lt;br /&gt;名前を "OneLiner" とした。&lt;br /&gt;&lt;br /&gt;この直後はデフォルトで用意されるアプリケーションデリゲートのクラスが１つできるだけ。&lt;br /&gt;まずはビューを１つ追加してみよう。&lt;br /&gt;&lt;br /&gt;新規ファイル作成を選び "UIViewController subclass"を選択する。&lt;br /&gt;名前は "MainViewController" とする。&lt;br /&gt;作成時のオプションで "With XIB for user interface" を入れておく。こうすると自動的にクラスの同名の XIBファイルを作り File's owner をそのクラスにしておいてくれる。&lt;br /&gt;&lt;br /&gt;こんな感じ。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZoUhefzk0CI/SonBJDF2phI/AAAAAAAAC9Y/ajQA12Ku064/s1600-h/090818-0001.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://2.bp.blogspot.com/_ZoUhefzk0CI/SonBJDF2phI/AAAAAAAAC9Y/ajQA12Ku064/s400/090818-0001.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5371036391808869906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;これらをつなげる作業に入ろう。&lt;br /&gt;最終イメージはこう。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZoUhefzk0CI/SonFRoLceqI/AAAAAAAAC9g/UdROwUz1AOo/s1600-h/090818-0006.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 331px; height: 400px;" src="http://2.bp.blogspot.com/_ZoUhefzk0CI/SonFRoLceqI/AAAAAAAAC9g/UdROwUz1AOo/s400/090818-0006.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5371040937249897122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;まずコードにプロパティとアウトレットを追加する。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;OneLinerAppDelegate.h&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;@class MainViewController;&lt;br /&gt;@interface OneLinerAppDelegate : NSObject &lt;UIApplicationDelegate&gt; {&lt;br /&gt;    UIWindow *window;&lt;br /&gt; MainViewController* mainViewController;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@property (nonatomic, retain) IBOutlet UIWindow *window;&lt;br /&gt;@property (nonatomic, retain) IBOutlet MainViewController* mainViewController;&lt;br /&gt;&lt;br /&gt;@end&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;mainViewController が新規に加わった部分。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;続いて MainWindow.XIB を開きアウトレットを接続する。&lt;br /&gt;&lt;br /&gt;(1) MainWindow.XIB に UIViewController を追加し、クラスを MainViewController に変える&lt;br /&gt;(2) OneLinerAppDelegate のアウトレット mainViewerController に(1)を接続する&lt;br /&gt;&lt;br /&gt;さらに MainViewController.XIB を開きとりあえず簡単なコントロールを配置しておく。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;最後にプログラムで window と ビューを接続する。&lt;br /&gt;&lt;b&gt;OneLinerAppDelegate.m&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;- (void)applicationDidFinishLaunching:(UIApplication *)application {    &lt;br /&gt;&lt;br /&gt;    // Override point for customization after application launch&lt;br /&gt; [window addSubview:mainViewController.view];&lt;br /&gt;    [window makeKeyAndVisible];&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて実行してみよう。&lt;br /&gt;ビューが表示された。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZoUhefzk0CI/SonHO657WBI/AAAAAAAAC9o/mX6A4gB0kU8/s1600-h/090818-0007+31%25.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 173px; height: 260px;" src="http://2.bp.blogspot.com/_ZoUhefzk0CI/SonHO657WBI/AAAAAAAAC9o/mX6A4gB0kU8/s400/090818-0007+31%25.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5371043089760344082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- - - -&lt;br /&gt;これら一連の操作は実は Xcodeで新規プロジェクトを作成する時に "View-based Application" を選ぶと自動的に行われるもの。今回手動でやってみることでそれぞれの関係を理解することができた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-7810126844452278268?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/7810126844452278268/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/window-based-application.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/7810126844452278268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/7810126844452278268'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/window-based-application.html' title='&quot;Window-based Application&quot; から組み立ててみる'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZoUhefzk0CI/SonBJDF2phI/AAAAAAAAC9Y/ajQA12Ku064/s72-c/090818-0001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-1219808440720940077</id><published>2009-08-20T06:03:00.000+09:00</published><updated>2009-08-20T06:03:00.171+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='習作アプリ'/><title type='text'>習作アプリ作成開始〜「一行メモ」</title><content type='html'>いくつかサンプルを読んで雰囲気がわかってきたので、習作アプリを１本作ってみる。&lt;br /&gt;&lt;br /&gt;あまりあれこれ欲張っても時間がかかるだけなので、画面も少なく極力シンプルなものを手がけてみよう。&lt;br /&gt;&lt;br /&gt;それが「一行メモ」。１行のメモを記録するだけのアプリ。一応写真が取れるようにしておく。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZoUhefzk0CI/Soh00fqgc-I/AAAAAAAAC84/avpgyskg6K0/s1600-h/090817-0001.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 259px; height: 288px;" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/Soh00fqgc-I/AAAAAAAAC84/avpgyskg6K0/s400/090817-0001.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5370671000841122786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;データは SQLite へ格納する。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-1219808440720940077?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/1219808440720940077/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/blog-post_18.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/1219808440720940077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/1219808440720940077'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/blog-post_18.html' title='習作アプリ作成開始〜「一行メモ」'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZoUhefzk0CI/Soh00fqgc-I/AAAAAAAAC84/avpgyskg6K0/s72-c/090817-0001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-531809578170452687</id><published>2009-08-19T05:32:00.000+09:00</published><updated>2009-08-19T05:32:00.672+09:00</updated><title type='text'>iPhoneシミュレーターで日本語を入力する</title><content type='html'>最初は英数字しか入力できず日本語をどうやったら入力できるのかがわからなかった。&lt;br /&gt;分かってみれば簡単。&lt;br /&gt;&lt;br /&gt;1. iPhoneシミュレーターを立ち上げる&lt;br /&gt;2. シミュレーター内の「設定」をクリック&lt;br /&gt;3. 「一般」&gt;「言語環境」と開き「言語」で日本語を選ぶ&lt;br /&gt;&lt;br /&gt;ついでに「書式」を日本に変えておく。&lt;br /&gt;&lt;br /&gt;- - - -&lt;br /&gt;なるほどこのあたりも実機と同じ様につくってあるのか。&lt;br /&gt;英語環境でのテストも簡単にできそうだ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-531809578170452687?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/531809578170452687/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/iphone_19.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/531809578170452687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/531809578170452687'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/iphone_19.html' title='iPhoneシミュレーターで日本語を入力する'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-8672177404060152792</id><published>2009-08-18T06:02:00.000+09:00</published><updated>2009-08-18T06:02:00.164+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='本'/><title type='text'>本情報：Core Data for iPhone</title><content type='html'>iPhone関連の洋書の紹介。&lt;br /&gt;&lt;br /&gt;「Core Data for iPhone: Building Data-Driven Applications for the iPhone and iPod Touch (Core Frameworks Series) (ペーパーバック)」&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=xcatsan-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=0321670426&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;表題からして 3.0からサポートされた Core Data を使った開発の解説のようだ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-8672177404060152792?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/8672177404060152792/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/core-data-for-iphone.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/8672177404060152792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/8672177404060152792'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/core-data-for-iphone.html' title='本情報：Core Data for iPhone'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-6545305046810458663</id><published>2009-08-17T06:41:00.007+09:00</published><updated>2009-08-17T16:03:38.496+09:00</updated><title type='text'>「第16章 iPhoneのカメラとフォトライブラリ」のサンプルを走らせる</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZoUhefzk0CI/SokAt_RlCBI/AAAAAAAAC9Q/g1Y1UXdi1Ds/s1600-h/2009-08-17.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 153px; height: 204px;" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/SokAt_RlCBI/AAAAAAAAC9Q/g1Y1UXdi1Ds/s400/2009-08-17.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5370824820695304210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ソースコードを読む。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CameraViewController.h&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;@interface CameraViewController : UIViewController &lt;br /&gt;&lt;UIImagePickerControllerDelegate, UINavigationControllerDelegate&gt; {&lt;br /&gt;  :&lt;br /&gt;@property (nonatomic, retain) IBOutlet UIImageView *imageView;&lt;br /&gt;@property (nonatomic, retain) IBOutlet UIButton *takePictureButton;&lt;br /&gt;@property (nonatomic, retain) IBOutlet UIButton *selectFromCameraRollButton;&lt;br /&gt;- (IBAction)getCameraPicture:(id)sender;&lt;br /&gt;- (IBAction)selectExistingPicture;&lt;br /&gt;@end&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;２つのデリゲートの実装を宣言している。またビューと２つのボタンのアウトレット、そしてボタンをタップしたときのアクションが２つある。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CameraViewController.h&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;初期化処理。カメラが無い場合（iPod Touch）はボタンを隠すようにしている。&lt;br /&gt;&lt;pre&gt;- (void)viewDidLoad {&lt;br /&gt;    if (![UIImagePickerController isSourceTypeAvailable:&lt;br /&gt;          UIImagePickerControllerSourceTypeCamera]) {&lt;br /&gt;        takePictureButton.hidden = YES;&lt;br /&gt;          :&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"Take New Picture" もしくは "Pick from Camera Roll" を押したときの処理。&lt;br /&gt;&lt;pre&gt;- (IBAction)getCameraPicture:(id)sender {&lt;br /&gt;    UIImagePickerController *picker =&lt;br /&gt;    [[UIImagePickerController alloc] init];&lt;br /&gt;    picker.delegate = self;&lt;br /&gt;    picker.allowsImageEditing = YES;&lt;br /&gt;    picker.sourceType = (sender == takePictureButton) ? &lt;br /&gt;    UIImagePickerControllerSourceTypeCamera :&lt;br /&gt;    UIImagePickerControllerSourceTypeSavedPhotosAlbum;&lt;br /&gt;    [self presentModalViewController:picker animated:YES];&lt;br /&gt;    [picker release];&lt;br /&gt;    &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;UIImagePickerController のインスタンスを作り、デリゲート等プロパティを設定する。&lt;br /&gt;押されたボタンの種類によってソースをカメラもしくはフォトアルバムのいずれかに切り替えている。&lt;br /&gt;そして最後に presentModalViewController:animated: へ UIImagePickerController を渡す。&lt;br /&gt;なるほど。これによって、例えば "Take New Picture" を押した場合、カメラのビューが下からずずずっとスライドしてくる動作になるのか。&lt;br /&gt;&lt;br /&gt;ADCリファレンスを見るとモーダルビューへのアニメーションの種類を modalTransitionStyle で制御できるらしい。&lt;br /&gt;試しに UIImagePickerController の modalTransitionStyle を UIModalTransitionStyleFlipHorizontal に設定してみた。&lt;br /&gt;&lt;pre&gt;picker.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;すると今度は水平方向にパネルが回転するようなアニメーションでカメラのビューに切り替わった。&lt;br /&gt;&lt;br /&gt;カメラでの撮影、もしくはフォトアルバムからの選択が終わるとデリゲートメソッドが呼ばれる。&lt;br /&gt;&lt;pre&gt;- (void)imagePickerController:(UIImagePickerController *)picker &lt;br /&gt;        didFinishPickingImage:(UIImage *)image&lt;br /&gt;                  editingInfo:(NSDictionary *)editingInfo {&lt;br /&gt;    imageView.image = image;&lt;br /&gt;    [picker dismissModalViewControllerAnimated:YES];&lt;br /&gt;    &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;画像が UIImage として渡されるのでこれを表示用ビューへ設定する。最後に dismissModalViewControllerAnimated: でカメラのビューを消す。&lt;br /&gt;&lt;br /&gt;キャンセル時にもデリゲートメソッドが呼ばれるのでカメラビューをキャンセル。&lt;br /&gt;&lt;pre&gt;- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {&lt;br /&gt;    &lt;br /&gt;    [picker dismissModalViewControllerAnimated:YES];&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;参考本：&lt;a href="http://www.amazon.co.jp/gp/product/4797354011?ie=UTF8&amp;tag=cocoatouch-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=4797354011"&gt;はじめてのiPhoneプログラミング&lt;/a&gt;&lt;img border="0" width="1" alt="" style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=cocoatouch-22&amp;l=as2&amp;o=9&amp;a=4797354011" height="1"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-6545305046810458663?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/6545305046810458663/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/16-iphone.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/6545305046810458663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/6545305046810458663'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/16-iphone.html' title='「第16章 iPhoneのカメラとフォトライブラリ」のサンプルを走らせる'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZoUhefzk0CI/SokAt_RlCBI/AAAAAAAAC9Q/g1Y1UXdi1Ds/s72-c/2009-08-17.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-6793650795609443396</id><published>2009-08-16T13:25:00.004+09:00</published><updated>2009-08-16T13:32:12.131+09:00</updated><title type='text'>オーガナイザ「開発をサポートできませんでした」</title><content type='html'>&lt;div&gt;ある日突然、オーガナイザから「開発をサポートできませんでした。」と表示される。&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZoUhefzk0CI/SoeKkgajz2I/AAAAAAAAC8g/HGzbwMftF3w/s1600-h/090816-0001.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 196px;" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/SoeKkgajz2I/AAAAAAAAC8g/HGzbwMftF3w/s400/090816-0001.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370413440443862882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;なんだこれ、と思いつつネットで調べると同様の現象は結構出ているようだ。解決策の中には OS を 3.1β に上げれば直るなんて載っていた。β版へのバージョンアップか。。今はやりたくないな。もう少し調べると iPhoneの電源の入れ直しで直ったとのブログがあった。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  line-height: 16px; font-family:Verdana, 'ＭＳ Ｐゴシック';font-size:small;"&gt;&lt;h2 class="entry_header"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-style: normal; font-weight: normal;  color: rgb(124, 68, 35); font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 0);  font-size:small;"&gt;&lt;h2 class="entry_header" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-style: normal; font-weight: normal; font-size: medium; color: rgb(124, 68, 35); "&gt;&lt;a href="http://miotree.blog26.fc2.com/blog-entry-19.html"&gt;iPhone実機でデバッグ出来ない！&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, fantasy; line-height: normal; font-size: 14px; "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZoUhefzk0CI/SoeLmRe3AgI/AAAAAAAAC8o/WVz7G8BHjGU/s1600-h/090816-0002.png"&gt;&lt;img src="http://2.bp.blogspot.com/_ZoUhefzk0CI/SoeLmRe3AgI/AAAAAAAAC8o/WVz7G8BHjGU/s400/090816-0002.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5370414570306732546" style="cursor: pointer; width: 400px; height: 216px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, -webkit-fantasy;font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: normal;"&gt;試して見るとうまくいった。ふう。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, -webkit-fantasy;font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-6793650795609443396?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/6793650795609443396/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/blog-post_16.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/6793650795609443396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/6793650795609443396'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/blog-post_16.html' title='オーガナイザ「開発をサポートできませんでした」'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZoUhefzk0CI/SoeKkgajz2I/AAAAAAAAC8g/HGzbwMftF3w/s72-c/090816-0001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-2787158080955811656</id><published>2009-08-15T06:45:00.005+09:00</published><updated>2009-08-16T14:34:28.791+09:00</updated><title type='text'>「第11章データの保存」のSQLiteサンプルを走らせる</title><content type='html'>入手したサンプルコードをビルド（フォルダ： 11 Persistence SQLite) 。&lt;br /&gt;&lt;br /&gt;iPhoneシミュレータで動作を確認。入力した文字列が次回起動時にも反映されている。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZoUhefzk0CI/SoM0FEv2BQI/AAAAAAAAC5g/IFkbz5mZGvo/s1600-h/090813-0004+32%25.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 138px; height: 246px;" src="http://4.bp.blogspot.com/_ZoUhefzk0CI/SoM0FEv2BQI/AAAAAAAAC5g/IFkbz5mZGvo/s400/090813-0004+32%25.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369192442534167810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ソースコードをざっと確認する。&lt;br /&gt;&lt;b&gt;PersistenceViewController&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;まず起動時に viewDidLoad が呼出される。&lt;br /&gt;&lt;pre&gt;- (void)viewDidLoad&lt;br /&gt;　・SQLite DB にテーブルを作成 (CREATE TABLE)&lt;br /&gt;　・保存してあった文字列を取得(SELECT)し、UITextFieldへ設定&lt;br /&gt;　・UIApplicationWillTerminateNotification を登録&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;DBから取得した文字列を UITextFieldへ設定するのに KVCを使っている。&lt;br /&gt;&lt;pre&gt;            NSString *fieldName = [[NSString alloc]&lt;br /&gt;                                   initWithFormat:@"field%d", row];&lt;br /&gt;            NSString *fieldValue = [[NSString alloc]&lt;br /&gt;                                    initWithUTF8String:rowData];&lt;br /&gt;            UITextField *field = [self valueForKey:fieldName];&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;fieldNameは "field1", "field2" , ...となりプロパティ名と一致する。これを使い valueForKey で UITextFieldのインスタンスを取得している。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;終了時。&lt;br /&gt;&lt;pre&gt;- (void)applicationWillTerminate:(NSNotification *)notification&lt;br /&gt;　・INSER OR REPACE 文を使い文字列を DBへ格納&lt;br /&gt;　・DBをCLOSE&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;後始末&lt;br /&gt;&lt;pre&gt;- (void)viewDidUnload {&lt;br /&gt;    // Release any retained subviews of the main view.&lt;br /&gt;    // e.g. self.myOutlet = nil;&lt;br /&gt;    self.field1 = nil;&lt;br /&gt;    self.field2 = nil;&lt;br /&gt;    self.field3 = nil;&lt;br /&gt;    self.field4 = nil;&lt;br /&gt;    [super viewDidUnload];&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQLite ファイルはどこに書き出されているのか。デバッガコンソールへ出力してみる。&lt;br /&gt;&lt;pre&gt;- (NSString *)dataFilePath {&lt;br /&gt;    NSArray *paths = NSSearchPathForDirectoriesInDomains(&lt;br /&gt;                                                         NSDocumentDirectory, NSUserDomainMask, YES);&lt;br /&gt;    NSString *documentsDirectory = [paths objectAtIndex:0];&lt;br /&gt; NSLog(@"%@", documentsDirectory);   // デバッガコンソールへディレクトリを表示&lt;br /&gt;    return [documentsDirectory stringByAppendingPathComponent:kFilename];&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;結果。&lt;br /&gt;&lt;pre&gt;2009-08-15 06:16:30.345 Persistence[1509:20b] /Users/hashi/Library/Application Support/iPhone Simulator/User/Applications/C5128B12-58D5-4873-A224-781256D016BA/Documents&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZoUhefzk0CI/SoM0prRvEMI/AAAAAAAAC5o/Ob-tYBAkXKE/s1600-h/090813-0005.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 355px;" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/SoM0prRvEMI/AAAAAAAAC5o/Ob-tYBAkXKE/s400/090813-0005.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369193071352156354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;なるほど。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;気がついた点が１つ。IBOutlet は @property でも記述できるのか。&lt;br /&gt;&lt;pre&gt;@interface PersistenceViewController : UIViewController {&lt;br /&gt;    UITextField *field1;&lt;br /&gt;     :&lt;br /&gt;}&lt;br /&gt;@property (nonatomic, retain) IBOutlet UITextField *field1;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;参考本：&lt;a href="http://www.amazon.co.jp/gp/product/4797354011?ie=UTF8&amp;tag=cocoatouch-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=4797354011"&gt;はじめてのiPhoneプログラミング&lt;/a&gt;&lt;img border="0" width="1" alt="" style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=cocoatouch-22&amp;l=as2&amp;o=9&amp;a=4797354011" height="1"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-2787158080955811656?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/2787158080955811656/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/11sqlite.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2787158080955811656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2787158080955811656'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/11sqlite.html' title='「第11章データの保存」のSQLiteサンプルを走らせる'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZoUhefzk0CI/SoM0FEv2BQI/AAAAAAAAC5g/IFkbz5mZGvo/s72-c/090813-0004+32%25.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-2550800548208581684</id><published>2009-08-14T06:33:00.000+09:00</published><updated>2009-08-14T06:33:01.229+09:00</updated><title type='text'>「はじめてのiPhoneプログラミング」のサンプルコードを探す</title><content type='html'>本に載っているサンプルコードを試しながら iPhoneプログラミングを学習したいのだが、いかんせんソースを打ちこむ時間がなかなか取れないし、その時間が惜しい。ソースを読むだけでも学習になるのだが、やはり実際に動かして自分なりの修正を加えて動作の確認を取りたい。&lt;br /&gt;&lt;br /&gt;そんなわけで本で紹介されているホームページを開いてサンプルコードが無いか探してみた。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://iphonedevbook.com/" target="_blank"&gt;Dave and Jeff’s Excellent iPhone Support Page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZoUhefzk0CI/SoHkdokhYnI/AAAAAAAAC5A/JMGJCB2Xym8/s1600-h/090812-0001+30%25.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 315px; height: 246px;" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/SoHkdokhYnI/AAAAAAAAC5A/JMGJCB2Xym8/s400/090812-0001+30%25.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368823428560282226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;既にiPhne 3 版が出ている。。&lt;br /&gt;&lt;br /&gt;サポート用の掲示板もあるようだ。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZoUhefzk0CI/SoHkdTYgJqI/AAAAAAAAC44/wA8VgIcr_2k/s1600-h/090812-0002+30%25.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 315px; height: 246px;" src="http://1.bp.blogspot.com/_ZoUhefzk0CI/SoHkdTYgJqI/AAAAAAAAC44/wA8VgIcr_2k/s400/090812-0002+30%25.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368823422872725154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;目的のソースコードはトップページにリンクがあった。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://iphonedevbook.com/BegiPhone3_Aug_2_2009.zip"&gt;http://iphonedevbook.com/BegiPhone3_Aug_2_2009.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;解凍すると本の章ごとにフォルダが分けてある。これだな。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZoUhefzk0CI/SoHkdKaa7tI/AAAAAAAAC4w/kIEGD0hdEOI/s1600-h/090812-0003.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 396px; height: 400px;" src="http://2.bp.blogspot.com/_ZoUhefzk0CI/SoHkdKaa7tI/AAAAAAAAC4w/kIEGD0hdEOI/s400/090812-0003.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368823420464852690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ただ iPhone OS 3 用のもののようだ（日本語は iPhone OS 2)。まあいい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-2550800548208581684?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/2550800548208581684/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/iphone.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2550800548208581684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2550800548208581684'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/iphone.html' title='「はじめてのiPhoneプログラミング」のサンプルコードを探す'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZoUhefzk0CI/SoHkdokhYnI/AAAAAAAAC5A/JMGJCB2Xym8/s72-c/090812-0001+30%25.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-2387645765939824626</id><published>2009-08-12T06:55:00.001+09:00</published><updated>2009-08-12T06:55:00.069+09:00</updated><title type='text'>UITableView のサンプルを試す</title><content type='html'>本の「第８章 テーブルビューの導入」(P.204)を読み、最初のサンプルを走らせてみた。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZoUhefzk0CI/SnqozGX4oAI/AAAAAAAAC0o/-agRJgPoHWk/s1600-h/2009-08-06+18.51.45.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_ZoUhefzk0CI/SnqozGX4oAI/AAAAAAAAC0o/-agRJgPoHWk/s400/2009-08-06+18.51.45.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5366787501802954754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;データソースを使うところは NSTableView と良く似ている。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-2387645765939824626?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/2387645765939824626/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/uitableview.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2387645765939824626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/2387645765939824626'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/uitableview.html' title='UITableView のサンプルを試す'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZoUhefzk0CI/SnqozGX4oAI/AAAAAAAAC0o/-agRJgPoHWk/s72-c/2009-08-06+18.51.45.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-1069812493780437384</id><published>2009-08-05T22:07:00.001+09:00</published><updated>2009-08-06T12:42:35.669+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Provisioning'/><title type='text'>実機でアプリを動かす</title><content type='html'>iPhone Developer Program へ参加できたので、実機でアプリ（HelloWorld）を動かしてみる。下記の記事が参考になった。&lt;br /&gt;&lt;br /&gt;目指せ！iPhoneアプリ開発エキスパート&lt;br /&gt;&lt;a href="http://gihyo.jp/dev/serial/01/iphone/0009?page=1" target="_blank"&gt;第9回　デバイスでアプリを動かす&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;iPhone Developer Program Portal には（英語だが）ウィザードのようなものも用意されていたのでそれを使ってみた。いくつかのステップを指示に従って進めていくだけで最終的に Provisioning Profile が作成できる。私の場合は作成途中で１０分以上待たされた上にエラーとなってしまった。ただログインしなおして見に行くと Profileが作成されていた。&lt;br /&gt;&lt;br /&gt;Provisioning Profile は ３つの情報を１つにまとめたものとなる。&lt;br /&gt;&lt;pre&gt;1. Development certificates ... 証明書&lt;br /&gt;2. Device identifiers ... 実機を識別するID&lt;br /&gt;3. App ID ... アプリを識別するID&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;1. は MacOSXで CSR (Certificate Signing Request) を作り、Developer Program Portal で署名してもらう（その結果証明書ができる）。&lt;br /&gt;&lt;br /&gt;それぞれの情報は複数つくることができて、Provisioning Profile はそれらを束ねたファイルとなる。つまり証明書、DeviceID、AppIDをいろいろ組み合わせた Profileを作ることができる。これが実機ビルド/インストールに必要となる。&lt;br /&gt;（このあたりは iPhone Reference Library &gt; iPhone Development Guide &gt; Managing Devices に説明があり図もあってわかりやすい）&lt;br /&gt;&lt;br /&gt;なお先日 iPhoneOS 3.0.1 がリリースされ、そのままでは Xcodeで開発ができないらしい。その件については下記情報が参考になった。&lt;br /&gt;&lt;a href="http://iphone-dev.g.hatena.ne.jp/hao_yayoi/?word=*%5Bxcode%5D" target="_blank"&gt;iPhone OS 3.0.1への実機ビルド対応について&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて手順通り進めるとなんとか実機で（適当に作ったサンプルの）アプリを動かす事ができた。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZoUhefzk0CI/SnlMAB97GfI/AAAAAAAAC0A/ZKuNQM0LBy8/s1600-h/2009-08-05+06.25.48.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_ZoUhefzk0CI/SnlMAB97GfI/AAAAAAAAC0A/ZKuNQM0LBy8/s400/2009-08-05+06.25.48.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5366403994400528882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- - - -&lt;br /&gt;ようやくスタート地点に立てた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-1069812493780437384?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/1069812493780437384/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/1069812493780437384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/1069812493780437384'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/08/blog-post.html' title='実機でアプリを動かす'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZoUhefzk0CI/SnlMAB97GfI/AAAAAAAAC0A/ZKuNQM0LBy8/s72-c/2009-08-05+06.25.48.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-590216244718404154</id><published>2009-07-31T06:08:00.006+09:00</published><updated>2009-07-31T06:23:40.015+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='手続き'/><title type='text'>アクティベーションに失敗するがサポートに対応してもらい成功</title><content type='html'>昨日の昼に Activation  Code が書かれたメールが届いた。さっそく記載の URLからアクティベーションを行う。ページを開き、画面の指示に従い、途中ログインを行い、Activation Code を送る。すると（お約束通り？）エラー。問い合わせろとのメッセージが表示される。どうも登録アカウントと、AppleStoreの決済情報（今回別のアカウントを使用）との紐付けができない為らしい。&lt;br /&gt;&lt;br /&gt;仕方がないので "contact us" というリンクから問い合わせフォームを開き、画面上のメッセージをコピー＆ペーストしてアクティベーションに失敗した旨を登録する（英語）。&lt;br /&gt;&lt;br /&gt;すると１時間もしないうちに日本語でサポートからメールが届く。手動で認証手続きを行うので、AppleStoreへログインして「ご注文状況/購入履歴」の情報を送ってほしいとのこと。指示に従ってその情報が記載されたスクリーンショットを送る。すると数分後に認証ができたとの連絡がきた。このあたりサポートの対応は素早くてなかなかいい。&lt;br /&gt;&lt;br /&gt;（指示に従って）ふたたび最初のメールに記載された URLからアクティベーションをやってみる。少しドキドキしながら最後の画面でボタンを押す。数秒後に成功画面。おお、やった。&lt;br /&gt;&lt;br /&gt;届いたメール。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZoUhefzk0CI/SnIPTFYFt5I/AAAAAAAACxY/X36lmS1ChRo/s1600-h/090731-0001+55%25.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 337px;" src="http://2.bp.blogspot.com/_ZoUhefzk0CI/SnIPTFYFt5I/AAAAAAAACxY/X36lmS1ChRo/s400/090731-0001+55%25.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5364366926686828434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;まずは１歩前進。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-590216244718404154?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/590216244718404154/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/07/blog-post_31.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/590216244718404154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/590216244718404154'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/07/blog-post_31.html' title='アクティベーションに失敗するがサポートに対応してもらい成功'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZoUhefzk0CI/SnIPTFYFt5I/AAAAAAAACxY/X36lmS1ChRo/s72-c/090731-0001+55%25.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-7028795502208851919</id><published>2009-07-30T08:44:00.002+09:00</published><updated>2009-07-30T08:48:19.652+09:00</updated><title type='text'>iPhone Developer Program Standard に申し込む</title><content type='html'>シミュレータでも開発は進められるが、やはり実機で確認しながら開発を進めたい。実機で試すには iPhone Developer Program への登録が必要（有料）なので申し込むことにする。&lt;br /&gt;&lt;br /&gt;AppleIDの情報に日本語が含まれていると問題が出るとのことだったので、新たに AppleIDを登録し、これを使って申し込んだ。決済は Apple Store で行うことになっていて、こちらは普段使っている（日本語情報を持つ）AppleID を使いクレジットカードで決済した。10,800円なり（税込み）。&lt;br /&gt;&lt;br /&gt;24時間以内にアクティベーションコードが送られてくるらしいので待つ事にする。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-7028795502208851919?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/7028795502208851919/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/07/iphone-developer-program-standard.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/7028795502208851919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/7028795502208851919'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/07/iphone-developer-program-standard.html' title='iPhone Developer Program Standard に申し込む'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-782196475388148196.post-8525947547942081992</id><published>2009-07-28T06:01:00.000+09:00</published><updated>2009-07-28T06:01:28.239+09:00</updated><title type='text'>iPhoneプログラミング開始</title><content type='html'>iPhone 3GS を入手したのをきっかけに本を買ってプログラミングを開始することにした。このブログではその過程を綴って行く。不定期更新。&lt;br /&gt;&lt;br /&gt;参考にする本はこれ。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=cocoatouch-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4797354011&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr&amp;npa=1" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/782196475388148196-8525947547942081992?l=xcatsan2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xcatsan2.blogspot.com/feeds/8525947547942081992/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://xcatsan2.blogspot.com/2009/07/iphone.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/8525947547942081992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/782196475388148196/posts/default/8525947547942081992'/><link rel='alternate' type='text/html' href='http://xcatsan2.blogspot.com/2009/07/iphone.html' title='iPhoneプログラミング開始'/><author><name>xcatsan</name><uri>http://www.blogger.com/profile/07611922019852427552</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp3.blogger.com/_ZoUhefzk0CI/R__yKBCa5HI/AAAAAAAAAaE/NFhqHEwMe-c/S220/pro.jpg'/></author><thr:total>0</thr:total></entry></feed>
