Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CoreDataによるデータ駆動型プログラミング
Search
Shinji Kobayashi
March 03, 2013
Programming
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CoreDataによる データ駆動型 プログラミング
Shinji Kobayashi
March 03, 2013
More Decks by Shinji Kobayashi
See All by Shinji Kobayashi
5分でできる UITableViewのDrag & Drop
gentlesoft
0
470
自社コンテンツ配信 のためのWebView Tips
gentlesoft
2
5.6k
実践Protocol-Extension
gentlesoft
0
84
UIKitDynamicsの活用法
gentlesoft
0
610
iOS9のUIKitDynamics
gentlesoft
0
50
SwiftでUIKitDynamics
gentlesoft
0
59
Other Decks in Programming
See All in Programming
Contextとはなにか
chiroruxx
1
320
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
170
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
110
スマートグラスで並列バイブコーディング
hyshu
0
140
Oxlintのカスタムルールの現況
syumai
6
1.1k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
400
AIで効率化できた業務・日常
ochtum
0
140
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
260
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
170
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.1k
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
250
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
200
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
sira's awesome portfolio website redesign presentation
elsirapls
0
280
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
590
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
210
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
400
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.7k
Transcript
CoreDataʹΑΔ σʔλۦಈܕ ϓϩάϥϛϯά Shinji Kobayashi GentleSoft
NameɿShinji Kobayashi Twitterɿ@gentlejkov GentleSoft Who are you? http://gentlesoft.net
Who are you? https://medpeer.jp
ΞδΣϯμ • CoreDataͬͯͳʹʁ • σʔλۦಈܕϓϩάϥϛϯάͬͯ ͳʹʁ • Ͳ͏࣮ͬͯ͢Δͷʁ
CoreDataͬͯͳʹʁ
CoreDataͱԿ͔ • Apple͕ఏڙ͢ΔσʔλӬଓԽί ϯϙʔωϯτ
CoreDataͱԿͰͳ͍͔ • not DataBase • not ORM
not DataBase ?
not ORM ?
͡Ό͋CoreDataͬͯԿͳͷ͞ • CoreDataΛཧ͢ΔΦϒδΣΫτ܈ NSManagedObjectContext σʔλͷૢ࡞Λཧ ɹNSPersistentStoreCoordinator σʔλϑΝΠϧΛཧ ɹNSManagedObjectModel σʔλͷߏΛཧ
NSManagedObjectModel ͡Ό͋CoreDataͬͯԿͳͷ͞ σʔλͷߏΛཧ
NSManagedObjectModel NSPersistentStoreCoordinator Data File ͡Ό͋CoreDataͬͯԿͳͷ͞ σʔλϑΝΠϧΛཧ
NSManagedObjectModel NSManagedObjectContext NSPersistentStoreCoordinator Data File ͡Ό͋CoreDataͬͯԿͳͷ͞ σʔλͷૢ࡞Λཧ
NSManagedObjectModel NSManagedObjectContext NSPersistentStoreCoordinator Application Program Data File ͡Ό͋CoreDataͬͯԿͳͷ͞ NSFetchRequest
NSManagedObjectModel NSManagedObjectContext NSPersistentStoreCoordinator Application Program Data File ͡Ό͋CoreDataͬͯԿͳͷ͞ NSArray
CoreDataͷ͍ํ ৽نϓϩδΣΫτͰ Master-Detail ApplicationΛબΜͰɺ Use Core DataʹνΣοΫΛ͚ͭΑ͏
CoreData͏ͱ͍͍͜ͱ͋Δͷʁ • ։ൃָ͕ɺࢼߦࡨޡ͍͢͠ •σʔλΛదʹΩϟογϡͯ͘͠ΕΔ • NSFetchedResultsController͕͑Δ
NSFetchedResultsControllerʁ • CoreDataͷσʔλͷมߋΛࢹ͠ ͯΞϓϦέʔγϣϯʹ௨ͯ͘͠Ε ΔΦϒδΣΫτ
ͭ·Γʁ • σʔλۦಈܕϓϩάϥϛϯάΛ αϙʔτ
σʔλۦಈܕ ϓϩάϥϛϯάͬͯͳʹʁ
σʔλۦಈʁ
Event User Πϕϯτۦಈʁ
Event User Display DataIO Πϕϯτۦಈʁ
Event User Data File Display DataIO Πϕϯτۦಈʁ
Event User Data File Display DataIO Πϕϯτۦಈʁ
Display Event DataIO User Data File Πϕϯτۦಈͷ໘ͳॴ Event2
Display Event DataIO User Data File DataIO Πϕϯτۦಈͷ໘ͳॴ DataIO Event2
Display Event DataIO User Data File DataIO Πϕϯτۦಈͷ໘ͳॴ DataIO Event2
Կ͔લಉ༷͡ͳ͜ͱ ॻ͍ͨͧʁ
Display Event DataIO User Data File Event2 Event3 Πϕϯτۦಈͷ໘ͳॴ
Display Event DataIO User Data File Event2 DataIO Event3 Πϕϯτۦಈͷ໘ͳॴ
DataIO
Display Event DataIO User Data File Event2 DataIO Event3 Πϕϯτۦಈͷ໘ͳॴ
DataIO Eventࣗମը໘ͱ ؔͳ͍ͧʁ
Display Event DataIO User Data File Event2 DataIO Data Manager
͖ͬ͢Γʂ ͕ͩͯʂ ͜Εɺ࣮ େม͡Όͳ͍ʁ σʔλۦಈʁ
User σʔλۦಈʁ
Event User σʔλۦಈʁ
Event DataIO User σʔλۦಈʁ
Event DataIO User Data File σʔλۦಈʁ
Event DataIO User Data File Data Manager σʔλۦಈʁ
Display Event DataIO User Data File Data Manager σʔλۦಈʁ
Display Event DataIO User Data File Event2 Data Manager σʔλۦಈʁ
Display Event DataIO User Data File Event2 DataIO Data Manager
σʔλۦಈʁ
Display Event DataIO User Data File Event2 DataIO Data Manager
͖ͬ͢Γʂ σʔλۦಈʁ
Display Event DataIO User Data File Event2 DataIO Data Manager
σʔλۦಈʁ ͕ͩͯʂ
Display Event DataIO User Data File Event2 DataIO Data Manager
σʔλۦಈʁ ͜Εɺ࣮ େม͡Όͳ͍ʁ
NSFetchedResultsController σʔλۦಈʂ Display Event DataIO User Data File Event2 DataIO
Ͳ͏࣮ͬͯ͢Δͷʁ
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller - (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath - (void)controllerDidChangeContent:(NSFetchedResultsController *)controller NSFetchedResultsController͕ ఏڙ͢Δdelegate
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller NSFetchedResultsController͕ ఏڙ͢Δdelegate σʔλͷߋ৽͕։࢝͞ΕΔࡍʹݺΕΔ
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type NSFetchedResultsController͕ ఏڙ͢Δdelegate ηΫγϣϯʹߋ৽͕͋ͬͨࡍʹݺΕΔ
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath NSFetchedResultsController͕
ఏڙ͢Δdelegate σʔλʹߋ৽͕͋ͬͨࡍʹݺΕΔ
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller NSFetchedResultsController͕ ఏڙ͢Δdelegate σʔλͷߋ৽͕ྃͨ͠ࡍʹݺΕΔ
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath ͜͜Ͱը໘ͷσʔλΛߋ৽
ߋ৽ͷ͋ͬͨΦϒδΣΫτ ߋ৽͞Εͨߦ มߋλΠϓ (C-UD+M) Ҡಈޙͷߦ
NSFetchedResultsControllerͬͯ UITableViewͷͨΊͷ͡Όʁ ͦΕ͚ͩ͡Ό͍ͬͨͳ͍
΄Μͱʹʁ https://github.com/gentlesoft/ NSFetchedResultsControllerSample
ҙʂ • ΦϒδΣΫτͷͲͷଐੑʹߋ৽͕͋ͬ ͔͔ͨΒͳ͍ • ήʔϜͳͲԠʹγϏΞͳΞϓ Ϧέʔγϣϯʹ͔ͳ͍ • didChangeObjectͷίʔϧ͕࿈ଧ͞Ε Δέʔε͕͋Δ
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠