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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
620
iOS9のUIKitDynamics
gentlesoft
0
50
SwiftでUIKitDynamics
gentlesoft
0
59
Other Decks in Programming
See All in Programming
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
150
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
3.7k
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
190
Creating Composable Callables in Contemporary C++
rollbear
0
210
Performance Engineering for Everyone
elenatanasoiu
0
270
Claude Team Plan導入・ガイド
tk3fftk
0
190
act2-costs.pdf
sumedhbala
0
110
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
3
470
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
170
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
140
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
270
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
320
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Agile that works and the tools we love
rasmusluckow
331
22k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Un-Boring Meetings
codingconduct
0
340
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
Visualization
eitanlees
152
17k
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ͷίʔϧ͕࿈ଧ͞Ε Δέʔε͕͋Δ
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠