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
480
自社コンテンツ配信 のためのWebView Tips
gentlesoft
2
5.7k
実践Protocol-Extension
gentlesoft
0
85
UIKitDynamicsの活用法
gentlesoft
0
620
iOS9のUIKitDynamics
gentlesoft
0
53
SwiftでUIKitDynamics
gentlesoft
0
60
Other Decks in Programming
See All in Programming
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
220
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.9k
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
230
バグを直したら useEffect が消えた
colorful12
3
670
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
710
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
280
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
490
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.4k
typoなんかねぇよ
raspython3
0
190
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
230
Oxlintはいいぞ(続)
yug1224
1
320
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
5
500
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
240
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
430
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
550
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Fireside Chat
paigeccino
42
4k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
How to Ace a Technical Interview
jacobian
281
24k
Docker and Python
trallard
47
4.1k
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ͷίʔϧ͕࿈ଧ͞Ε Δέʔε͕͋Δ
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠