オープンセミナー2013@広島
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

オープンセミナー2013@広島

on

  • 1,936 views

タイトル: ...

タイトル:
iOS フレームワークとデータベース
アジェンダ:
iOS(iPhone/iPad/iPod Touch)向けの専用アプリケーションの開発に興味がある方に向けて、大きく2つのテーマに分けて「iOS 開発環境 概要」と、ちょっと専門的なiOSローカルデータベースアクセスのための仕組みである「iOS CoreData 概要」を紹介します。
http://osh-web.github.com/#/

Statistics

Views

Total Views
1,936
Views on SlideShare
1,375
Embed Views
561

Actions

Likes
0
Downloads
4
Comments
0

10 Embeds 561

http://soudai1025.blogspot.jp 518
http://soudai1025.blogspot.com 29
https://twitter.com 5
https://www.facebook.com 2
http://feeds.feedburner.com 2
http://soudai1025.blogspot.tw 1
https://m.facebook.com&_=1359093883548 HTTP 1
https://m.facebook.com&_=1358932751306 HTTP 1
http://www.blogger.com 1
http://soudai1025.blogspot.de 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

オープンセミナー2013@広島 Presentation Transcript

  • 1. 公開用 一部画像を削除/変更 版 iOS フレームワークとデータベース http://www.a10-objects.jp/ オープンセミナー広島@2013 最終更新 2013-01-21 17:1313年1月21日月曜日 1
  • 2. 1.今日の目次と概要 1. 今日の内容  セッション内容を紹介。 2. A10 Objectsの紹介  こんな人です。 3. iOS 開発環境 概要  iOS向けのアプリを開発するために必要なもの   ・デベロッパー登録からアプリ公開までの流れ   ・必要な機材  iOS フレームワーク概要 4. iOS CoreData 概要  iOSの標準データベースSQLiteへのアクセス 5. 質疑応答13年1月21日月曜日 2
  • 3. 2.A10 Objectsの紹介13年1月21日月曜日 3
  • 4. エーテン・オブジェクツ株式会社 1. Java ベースのサーバーアプリ開発 2. Objective-C ベースのiOS アプリ開発 3. 自社FWの開発/各種アプリ開発 4. 受託開発など...13年1月21日月曜日 4
  • 5. 開発メンバーツアー wo!13年1月21日月曜日 5
  • 6. WebObjects • JavaベースのASフレームワーク(Apple社制) • 各種開発ツールはEclipesベースでOSS化 • Wonder/WOdka フレームワークによる拡張 WebObjects Apple Store /App Store/iTunes WOdka13年1月21日月曜日 6
  • 7. iOS 開発 • Objective-C ベース • Javaによるサーバーサイドとの連例アプリ • iOS関連サーバーの開発 iPhone iPad/ iPad mini iPod touch13年1月21日月曜日 7
  • 8. 参加しているよ! iOS SDK 開発勉強会 2010年5月から毎週始めた勉強会 Onlineで開催、128回 参加表明は『私まで』 広島 電子工作 娯楽部(仮) 2012年10月から始めたFB(非公開) 電子工作が趣味の方の集まり13年1月21日月曜日 8
  • 9. SNS関連 Facebook: 谷雅彦 Twitter: woTani13年1月21日月曜日 9
  • 10. iOS 24h http://ios24h.net/ wo!13年1月21日月曜日 10
  • 11. 3. iOS 開発環境 概要13年1月21日月曜日 11
  • 12. 3. iOS 開発環境 概要 1. iOS向けのアプリを開発するために必要なもの 1. デベロッパー登録からアプリ公開までの流れ 2. 必要な機材 2. iOS フレームワーク概要 1. Cocoa Touch レイヤのフレームワーク 2. Mediaレイヤのフレームワーク 3. Core Servicesレイヤのフレームワーク 4. Core OSレイヤのフレームワーク13年1月21日月曜日 12
  • 13. iOS向けのアプリを開発するために必要なもの 1. デベロッパー登録からアプリ公開までの流れ • iOSデベロッパプログラム • iOSデベロッパエンタープライズプログラム • iOSデベロッパユニバーシティプログラム 2. 必要な機材(ハードウエア) • Mac (OS X 10.8) • インターネット • iOS 機器 3. 開発環境 • Xcode IDE 4. 忍耐13年1月21日月曜日 13
  • 14. デベロッパー登録からアプリ公開までの流れ iOSデベロッパプログラム iOSデベロッパエンタープライズプログラム iOSデベロッパユニバーシティプログラム デベロッパー登録 開発 テスト 配布13年1月21日月曜日 14
  • 15. デベロッパー登録からアプリ公開までの流れ iOSデベロッパプログラム iOSデベロッパエンタープライズプログラム iOSデベロッパユニバーシティプログラム お デベロッパー登録 開発 テスト 配布13年1月21日月曜日 15
  • 16. デベロッパー登録からアプリ公開までの流れ iOSデベロッパプログラム(年間参加費 8,400円) 個人開発者、個人事業主、法人企業、組織団体、行政機関、教育機関がApp Store でアプリケーションの配布を希望する場合 特記事項: 社内専用配布不可 iOSデベロッパエンタープライズプログラム (年間参加費 24,800円) 所属している法人企業、組織団体、行政機関、教育機関の内部で配布するために業 務専用アプリケーションの開発を希望する場合 特記事項: AppStore配布不可、B2B配布不可、iAd広告不可 iOSデベロッパユニバーシティプログラム(無料) 学位を授与できる高等教育機関が「iOS向け開発」のカリキュラム導入を希望し ている場合 特記事項: AppStore配布不可、B2B配布不可、iAd広告不可 AdHoc不可、SDKのβ利用不可、コードレベルサポート不可13年1月21日月曜日 16
  • 17. 必要な機材(ハードウエア) • Mac (OS X 10.8) • インターネット • iOS 機器 Mac (OS X 10.8) インターネット iOS 機器13年1月21日月曜日 17
  • 18. 必要な機材(ハードウエア) Apple社のMac 開発環境を動作させるためには、OS X が動作するApple社のMacが必要。 iMac/MacPro/MacBookシリーズどのMacでも可能だが、極端に小さな画面 はおすすめしない。 Mac (OS X 10.8) インターネット環境 開発環境を動作、各種ツールの動作には必須環境。 Xcodeは、Apple社のサーバーと接続してドキュメントのダウンロードおよび デベロッパー関連のやりとりを行う。 インターネット iOS 機器 開発されたアプリを実際の機器でテストするために必要。 iOS 機器13年1月21日月曜日 18
  • 19. 開発環境 • Xcode IDE Xcode IDE Instruments iOS Simulator13年1月21日月曜日 19
  • 20. 開発環境 Xcode IDE インタフェース設計、データ設計、AppleLLVMコンパイラ、デバッガ、バージ ョン管理、デベロッパーサイト連携などの統合開発環境などの。 Xcode IDE Instruments ディスク、メモリ、CPU使用率などのデータをリアルタイムに収集して表示。 Instruments iOS Simulator/Printer Simulator 実際のiOSデバイスとほぼ同じ方法でアプリケーションを動作。 iOS Simulator/Printer Simulator13年1月21日月曜日 20
  • 21. 忍耐13年1月21日月曜日 21
  • 22. iOS フレームワーク概要 1. Cocoa Touch レイヤのフレームワーク Address Book UI, Event Kit UI, Game Kit, Map Kit, Message UI, Twitter, UIKit, iAd 2. Mediaレイヤのフレームワーク AV Foundation, Assets Library, Audio Toolbox, Audio Unit, Core Audio, Core Graphics, Core Image, Core MIDI, Core Text, Core Video, GLKit, Image I/O, Media Player, Open AL, OpenGLES, Quartz Core framework 3. Core Servicesレイヤのフレームワーク Accounts, Ad Support, Address Book, CFNetwork, Core Data, Core Foundation, Core Location, Core Media, Core Motion, Core Telephony, Event Kit, Foundation, Mobile Core Services, Newsstand, Pass Kit, Quick Look, Social, Store Kit, System Configuration framework 4. Core OSレイヤのフレームワーク Accelerate, Core Bluetooth, External Accessory, Security, System13年1月21日月曜日 22
  • 23. Objective-C 2.0Objective-Cの歴史 作成 A4 縦 100 % 2009-03-17 13:28 by A10 文法-クラス使用例 作成 A4 縦 100 % 2009-03- 1973年 #import <Cocoa/Cocoa.h> C #import "ClassSample.h" int main(int argc, char *argv[]) 影響 Smalltalk { 1983年 1983年 ClassSample *obj = [[ClassSample alloc]init]; C++ Objective-C [obj methodName:@"AA" with:11]; 1985年 [ClassSample classMethod:@"BB"]; Objective-C on GCC NeXT社 return NSApplicationMain(argc, (const char **) argv); Java } Python Ruby • Objective-C++ こんな感じで書く:メッセージ式 • [オブジェクト メッセージ] 2007年 • [オブジェクト メッセージ:引数] Objective-C 2.0 MacOSX 10.5 iPhone OS 2.x • [オブジェクト メッセージ:引数 メッセージ2:引数2....] •C言語をベースにオブジェクト指向に拡張。 •iPhone OSでは32ビット環境のみをサポート •C/C++/Objective-C など13年1月21日月曜日 23
  • 24. Cocoa Touch レイヤのフレームワーク Address Book UI, Event Kit UI, Game Kit, Map Kit, Message UI, Twitter, UIKit, iAd iOS開発で特徴的な機能を実装するための主要なフレームワークが含ま れているグループ。 「ストーリーボード」「ドキュメント」「マルチタスク」「印刷」「通 知サービス」「ジェスチャー」などを実現することが出来る。 「UIKit フレームワーク」13年1月21日月曜日 24
  • 25. Cocoa Touch レイヤのフレームワーク 「UIKit framework」 おそらく「UIKit framework」= iOSアプリ開発 というべきもの。 iOS にグラフィカルなイベント駆動型アプリケーションを実装するため の主要なAPIを提供する。 以下の機能を実装するために使用。 ユーザインターフェイス管理、グラフィックス処理、ウインドウ管理、マルチタスク対応、 印刷、タッチ/モーションベースイベントの処理、テキストおよびWebコンテンツ、カット、 コピー、ペースト、通知、etc...。13年1月21日月曜日 25
  • 26. Cocoa Touch レイヤのフレームワーク 「Address Book UI, Event Kit UI, Game Kit, Map Kit, Message UI, Twitter, iAd」 • Address Book UI • Message UI 連絡先の標準インターフェースの提供 電子メールメッセージ、SMSメッセージの作成機能を提供 • Event Kit UI • Twitter カレンダーの標準インターフェースの提供 Twitterへの投稿機能の提供 補足: Social Framework でも提供 • Game Kit ゲームに必要な機能を提供。ネットワーク機能、Game • iAd Centerの提供 アプリケーションにバナー広告の配信機能を提供 • Map Kit マップインタフェース(Map View)の提供13年1月21日月曜日 26
  • 27. Mediaレイヤのフレームワーク AV Foundation, Assets Library, Audio Toolbox, Audio Unit, Core Audio, Core Graphics, Core Image, Core MIDI, Core Text, Core Video, GLKit, Image I/O, Media Player, Open AL, OpenGLES, Quartz Core framework マルチメディア体験の演出のためのフレームワークが含まれているグル ープ。 「グラフィック」「オーディオ」「ビデオ」「AirPlay」などを使用す ることが出来る。 「AV Foundation フレームワーク」13年1月21日月曜日 27
  • 28. Cocoa Touch レイヤのフレームワーク 「AV Foundation framework」 iOS にオーディオとビデオの録音・録画と再生機能を提供し、これらの メディア操作と管理を洗練された方法で提供する。 以下の機能を実装するために使用。 メディアの編集、ムービーのキャプチャ/再生、トラックの管理、メタデータ管理、サウンド 同期、サウンドファイルに関する詳細、AirPlay経由での配信機能、etc...。13年1月21日月曜日 28
  • 29. Cocoa Touch レイヤのフレームワーク 「 AV Foundation, Assets Library, Audio Toolbox, Audio Unit, Core Audio, Core Graphics, Core Image, Core MIDI, Core Text, Core Video, GLKit, Image I/O, Media Player, Open AL, OpenGLES, Quartz Core framework」 • AV Foundation • Core Image オーディオ、ビデオ機能の提供。録音/再生/編集など。 ビデオ、静止画の操作、フィルタ/顔認識などの提供 • Assets Library • Core MIDI デバイスから写真やビデオへのアクセスを提供。 MIDIデバイス(Dock/ネットワーク)との通信機能などを提供 • Audio Toolbox • Core Text 音声の録音、再生、フォーマット変換などの機能を提供。 テキストのレイアウト/フォントの処理の提供 • Audio Unit • Core Video オーディオ処理の提供 Core Mediaのサポート機能の提供 • Core Graphics • GLKit 2D描画、ベクトルベースの描画エンジン、PDFなどの提供 OpenGL ES 2.0アプリのためのサポート機能の提供13年1月21日月曜日 29
  • 30. Cocoa Touch レイヤのフレームワーク 「 AV Foundation, Assets Library, Audio Toolbox, Audio Unit, Core Audio, Core Graphics, Core Image, Core MIDI, Core Text, Core Video, GLKit, Image I/O, Media Player, Open AL, OpenGLES, Quartz Core framework」 • Image I/O 画像データ/画像メタデータの操作を提供。 • Media Player オーディオ/ビデオの再生機能を提供。 • Open AL 高性能/高品質のオーディオを提供。 • OpenGLES 2D/3Dコンテンツの描画機能の提供 • Quartz Core 複雑なアニメーション/視覚効果の提供13年1月21日月曜日 30
  • 31. Core Servicesレイヤのフレームワーク Accounts, Ad Support, Address Book, CFNetwork, Core Data, Core Foundation, Core Location, Core Media, Core Motion, Core Telephony, Event Kit, Foundation, Mobile Core Services, Newsstand, Pass Kit, Quick Look, Social, Store Kit, System Configuration framework 全てのアプリケーションで使用する基本的なサービスが含まれているグ ループ。直接的に使用しなくとも、システム内のほとんどの部分がこれ らの上に構築されている。 「iCloudストレージ」「自動参照カウント」「ブロックオブジェクト」 「Grand Central Dispatch (GCD)」「アプリ内課金」「SQLite」 「XMLサポート」などのサービスを受けることが出来る。 「Foundationフレームワーク」13年1月21日月曜日 31
  • 32. Cocoa Touch レイヤのフレームワーク 「 Foundationフレームワーク」 おそらく「 Foundationフレームワーク」= iOSアプリ開発 というべき もの(UIKitと同様に)。 Core Foundation フレームワーク(Cベース)に、Objective-Cラッパー を提供したiOS アプリ開発の土台となるクラス群。 以下の機能を実装するために使用されます。 コレクションデータ型、バンドル、文字列管理、日付と時刻の管理、環境設定管理、スレッ ドおよび実行ループ、通信、ローカライズ、正規表現、etc...。13年1月21日月曜日 32
  • 33. Cocoa Touch レイヤのフレームワーク Accounts, Ad Support, Address Book, CFNetwork, Core Data, Core Foundation, Core Location, Core Media, Core Motion, Core Telephony, Event Kit, Foundation, Mobile Core Services, Newsstand, Pass Kit, Quick Look, Social, Store Kit, System Configuration framework • Accounts • Core Foundation 「シングルサインイン」モデルの提供 基本的なデータ管理およびサービス機能の提供 • Ad Support • Core Location アプリケーションにバナー広告の配信機能の提供 位置と方角の情報(GPS/携帯電話/Wi-Fi利用)の提供 • Address Book • Core Media 連絡先情報への操作を提供。 AV Foundationが使用する下位レベル操作の提供 • CFNetwork • Core Motion ネットワークプロトコルへオブジェクト指向(Cベース)の提供 モーションイベント(加速度など)処理の提供 • Core Data • Core Telephony MVCモデルによるデータモデル機能の提供 デバイス上の電話ベースの情報をやり取りする機能の提供13年1月21日月曜日 33
  • 34. Cocoa Touch レイヤのフレームワーク Accounts, Ad Support, Address Book, CFNetwork, Core Data, Core Foundation, Core Location, Core Media, Core Motion, Core Telephony, Event Kit, Foundation, Mobile Core Services, Newsstand, Pass Kit, Quick Look, Social, Store Kit, System Configuration framework • Event Kit • Pass Kit カレンダーイベントの操作を提供 提供 • Quick Look • Foundation アプリが直接サポートしていないファイルの内容のプレビュ Core Foundation機能のObjective-Cラッパーを主に提供 ー機能の提供 • Mobile Core Services • Social Uniform Type Identifiers (UTI)で使用される下位レベルの ソーシャルネットワーキングの機能の提供 タイプの提供。 • Store Kit • Newsstand アプリ内課金機能の提供 雑誌や新聞の購読者用の集中管理機能の提供 • System Configuration デバイスのネットワー ク構成を特定する機能の提供13年1月21日月曜日 34
  • 35. Core OSレイヤのフレームワーク Accelerate, Core Bluetooth, External Accessory, Security, System ほかの多くのテクノロジーの土台となる下位レベルの機能グループ。直 接的に使用しなくとも、システム内のほとんどの部分がこれらの上に構 築されている。 「DSP、線形代数、 画像処理の計算」「Bluetooth」「ハードウェア アクセサリとの通信」「キーチェーン」「仮想メモリシステム、スレッ ド、ファイルシステム、 ネットワーク、およびプロセス間通信を管理」 などを実現することが出来ます。13年1月21日月曜日 35
  • 36. Cocoa Touch レイヤのフレームワーク 「 Accelerate, Core Bluetooth, External Accessory, Security, System」 • Accelerate • System SP、線形代数、 画像処理の計算を実行するためのインター Machベースのカーネル上に、OSIXスレッド/BSDソケット/ フェイスなどの提供 ファイル操作/メモリ管理などのiOS機能の提供 • Core Bluetooth Bluetoothアクセサリへの操作の提供 • External Accessory iOSデバイスに接続されているハードウエアアクセサリへの操 作の提供。 • Security アプリケーションで管理するデータのセキュリティの提供13年1月21日月曜日 36
  • 37. 4. iOS CoreData 概要13年1月21日月曜日 37
  • 38. 4. iOS CoreData 概要 1. Core Data て? 2. 生い立ち 3. オブジェクトグラフ 4. 開発ツール 5. 一覧表示との統合13年1月21日月曜日 38
  • 39. 1.Core Data て? • 「データ」を「モデル」として抽象化して、オブジェクトとして操作 • 「M-V-C」モデルのM(モデル)部分としてデータの操作 • モデル部分のデータをデータベースなどへ永続化する操作 • OS X / iOS のために開発されたフレームワーク • より具体的な例としては「モデルとSQLite(SQLデータベース)」間でO/R マッピング技術でオブジェクトベースで操作 • モデルを効率よくV-Cするための標準クラス/開発ツールの提供 • Core Dataの機能(変更操作/スキーマ移行/etc...)13年1月21日月曜日 39
  • 40. 1.Core Data て? • 「モデルとSQLite(SQLデータベース)」間でO/Rマッピング技術でオ ブジェクトベースで操作 データベースの永続化の操作にSQL文ではなくオブジェクトで操作13年1月21日月曜日 40
  • 41. 1.Core Data て? なぜ必要?  (必要性に関しては。いろんな考え方ありますが...とりあえず) 1. 非常にシンプルでデータ構造が簡単ならデータを独自形式のファイルで管理 2. データが多量で複雑になるなら、データベースを導入して管理 3. プログラムはオブジェクト管理が便利、データベースはデータの効率的アクセスが得意 4. じゃ、相互変換的出来る便利なツールを作ろう 5. O/R技術の登場! 6. なんと、SQL知らなくても、多量のデータをデータベースに保存/アクセス可能に! 多量のデータでもメモリ使用量の増加とパフォーマンスの低下を予防 O/R機能を使うのにSQLに比べて大きい学習オーバーヘッドが発生 Apple社の資料では「アプリケーションのモデル 階層を実装するために 必要なコード量(行数)が、一般に50 70%程度削減できる」13年1月21日月曜日 41
  • 42. 1.Core Data て? 一般的なパフォーマンス比較13年1月21日月曜日 42
  • 43. 1.Core Data て? Core Data の主な機能 • 変更の追跡、取り消し処理の支援 • フォールティング(メモリ使用量の削減のための遅延読み込みなど) • 値の自動検証 • スキーマの移行(マイグレーション) • ユーザーインタフェースとの同期支援クラスの提供(NSFetchedResultsController) • 属性アクセス用メソッドの自動生成機能 • 洗練されたクエリのコンパイル(NSPredicate)13年1月21日月曜日 43
  • 44. 1.Core Data て? おまけ • Core DataはRDBMS(リレーションデータベース)ではない。 • Core Dataは体系化されたデータ構造の変更管理と永続ストア間の読み書きの基本を提供 する仕組み。(この事は実際にファイルに保存される事とは無関係である) • Core Dataは他のフレームワーク同様に万能では無く、データ構造の管理を助ける仕組み である。 Core Data と EOF のクラスの多くには類似点 • NSManagedObject -> EOGenericRecord • NSManagedObjectModel -> EOModel [マネージド(管理対象)オブジェクト モデル] • NSManagedObjectContext -> EOEditingContext [マネージド(管理対象)オブジェクト コンテキスト] • NSPersistentStoreCoordinator -> EOPersistentStoreCoordinator [パーシステント(永続) ストア コーディネータ] • NSEntityDescription -> EOEntity • NSPropertyDescription -> EOProperty • NSRelationshipDescription -> EORelationship • NSAttributeDescription -> EOAttribute • Core DataにはEOModelGroupは存在しない。13年1月21日月曜日 44
  • 45. 1.Core Data て? 一度、使い始めると止められないよ! ....たぶん(^^)13年1月21日月曜日 45
  • 46. 2. 生い立ち • 1996年3月に「Next社」から世界初のWebアプリケーションサーバとし てリリースされた「WebObjects」で使用されたEnterprise Objects(エンタープライズオブジェクツ)フレームワークから。 • 多くのアプリケーションサーバーとO/R技術に影響を与えたといわれる。 • Mac OS X 10.4で、アプリケーション組み込み用のSQLiteを使用した Core Dataとしてリリース(デスクトップ用の単一アプリケーション用途に 再設計)。 • SQLite/XML/バイナリーをサポート • Xcodeでモデル定義などをサポート • iOS 3.0から追加(それまではSQLiteのみ)13年1月21日月曜日 46
  • 47. 3. オブジェクトグラフ NSManagedObject [マネージド(管理対象)オブジェクト] NSManagedObjectContext [マネージド(管理対象)オブジェクト コンテキスト] NSPersistentStoreCoordinator [パーシステント(永続) ストア コーディネータ]13年1月21日月曜日 47
  • 48. 3. オブジェクトグラフ Core Data と実際のモデルオブジェクトの関係は? managedObjectContext • 1つのデータの管理 NSManagedObject(管理対象オブジェクト)が1つのデータを managedObject 管理。 • 変更などの管理 NSManagedObjectContext(管理対象オブジェクト・コンテ キスト)がオブジェクト変更を管理。 PersistentStoreCoordinator • SQLiteのファイル管理 NSPersistentStoreCoordinator(永続ストアコーディネータ) が実際のSQLファイルを管理。 データ.sqlite13年1月21日月曜日 48
  • 49. 3. オブジェクトグラフ NSManagedObject(管理対象オブジェクト) モデルはXcodeで定義することで作成出来る managedObject (1つのデータ) • 1つのデータの管理 NSManagedObject(管理対象オブジェクト)が1つのデータを NSAttributeDescription (属性) 管理。 • エンティティ管理 NSEntityDescription(エンティティ記述)、 entityMapping NSPropertyDescription(プロパティ記述)、 (エンティティ関係) NSAttributeDescription(属性)。 • エンティティ関係管理 managedObject NSRelationshipDescription(関係)、 (1つのデータ) NSPropertyMapping(関係)。13年1月21日月曜日 49
  • 50. 4. 開発ツール 1. Xcode •データモデルの定義(エンティティ/属性/リ レーションなど) •フェッチ要求の定義 2. Instruments(インスツルメンツ) •フェッチ情報の記録 •処理時間13年1月21日月曜日 50
  • 51. 4. 開発ツール Xcode / モデル定義例13年1月21日月曜日 51
  • 52. 3. オブジェクトグラフ Xcode / モデル定義例 属性定義 オプション: 属性が必須なら OFF 一時: ON: データファイルに保存されない、アフリ内で一時的に使用される。 索引付き: インデックスを追加。 ただし、データの作成時にインデックス作成時間が必要になる。 指定可能なデータ型一覧: ・整数16 :16bitの整数(NSNumber) ・整数32 :32bitの整数(NSNumber) ・整数64 :64bitの整数(NSNumber) ・10進 :38桁までの整数値(NSDecimalNumber) ・倍精度 :duble(NSNumber) ・浮動小数点:float(NSNumber) ・文字列 :(NSString) ・論理値 :(NSNumber) ・日付 :(NSDate) ・バイナリデータ:(NSData) ・変換可能 :独自で変換する(UIImageなど) ・未定義:13年1月21日月曜日 52
  • 53. 3. オブジェクトグラフ Xcode / フェッチ要求の定義 GUIによる検索条件定義 f_BF_LogicalDelTS == nil AND ((((f_DT_Start_Date <= $tagetDate AND f_xxxxx_Date >= $tagetDate) OR (f_DT_Start_Date <= $tagetDate AND f_xxxxx_Date == nil)) AND f_xxxxx_Date <= $today) OR (((f_xxxxx_Date <= $tagetDate AND f_xxxxx_Date >= $tagetDate) OR (f_xxxxx_Date <= $tagetDate AND f_xxxxx_Date == nil AND f_xxxxx_Date >= $tagetDate)) AND f_xxxxx_Date > $today)) AND (f_xxxxx_Date == 12 OR f_xxxxx_Date == 22) AND f_xxxxx_Date == 013年1月21日月曜日 53
  • 54. 4. 開発ツール Xcode / Instruments(インスツルメンツ) DTrace ベース (SunがSolaris用に開発) 時間: microseconds13年1月21日月曜日 54
  • 55. 4. 開発ツール Xcode / Instruments(インスツルメンツ) DTrace ベース (SunがSolaris用に開発) 時間: microseconds13年1月21日月曜日 55
  • 56. 5. 一覧表示との統合 CoreDataを一覧表示させる便利なクラスがある NSFetchedResultsController13年1月21日月曜日 56
  • 57. 5. 一覧表示との統合 CoreDataを一覧表示 NSFetchedResultsController UITableViewにCoreDataのデータを表示するクラス データソース表示情報を提供 デリゲートメソッドにより動作のカスタマイズ 検索/編集(追加/変更/削除)機能の提供 ストリートボートを組み合わせれば簡単にテスト可能13年1月21日月曜日 57
  • 58. 5. 一覧表示との統合 NSManagedObject(管理対象オブジェクト)- 新規追加 - (void)insertNewObject:(id)sender { NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; // If appropriate, configure the new managed object. // Normally you should use accessor methods, but using KVC here avoids the need to add a custom class to the template. [newManagedObject setValue:[NSDate date] forKey:@"timeStamp"]; // Save the context. NSError *error = nil; if (![context save:&error]) { // Replace this implementation with code to handle the error appropriately. // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } } • 新規データを作成して保存の例 • 一覧表示に使用しているCoreData管理オブジェクト(fetchedResultsController)から、CoreDataの変更を追跡している NSManagedObjectContextを取得 • 新しいレコード(NSManagedObject)を作成してNSManagedObjectContextオブジェクトに追加 • 新しいレコード(NSManagedObject)にデータを設定 • データ保存13年1月21日月曜日 58
  • 59. 5. 一覧表示との統合 NSManagedObject(管理対象オブジェクト)- 削除-保存 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; [context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]]; NSError *error = nil; if (![context save:&error]) { // Replace this implementation with code to handle the error appropriately. // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } } } • データを削除の例 • 一覧表示に使用しているCoreData管理オブジェクト(fetchedResultsController)から、CoreDataの変更を追跡している NSManagedObjectContextを取得 • NSManagedObjectContextオブジェクトからオブジェクトを削除 • データ保存13年1月21日月曜日 59
  • 60. 公開用 http://www.a10-objects.jp/ オープンセミナー広島@2013 End for OSH@201313年1月21日月曜日 60