potatotips #33 http://potatotips.connpass.com/event/38557/
import CoreData࠷ۙɺCore DataͲ͏Ͱ͔͢?@noliliNoritaka Kamiya
View Slide
CoreData
NSAsynchronousFetchRequestNSFetchRequestNSPersistentContainer
NSFetchRequest
let request = NSFetchRequest(entityName: "Message")context.fetch(request) as! [Message] Force Casting!Before
let request: NSFetchRequest = Message.fetchRequest()// fetchRequest() -> NSFetchRequest ࣗಈੜ͞ΕΔlet messages = context.fetch(request) // [Message]After
NSFetchRequestNSManagedObjectͷαϒΫϥεΛfetch͢Δ߹ʹศརSwiftϑϨϯυϦʔʹSwift/Objective-C
NSAsynchronousFetchRequest
let request: NSFetchRequest = Message.fetchRequest()let asyncRequest = NSAsynchronousFetchRequest(fetchRequest: request){ result inlet messages = messages = result.finalResult ?? []}try! managedObjectContext.execute(asyncRequest)
let result: NSAsynchronousFetchResult =try! managedObjectContext.execute(asyncRequest)result.cancel()
NSAsynchronousFetchRequestclosureΛͬͨඇಉظϑΣονָ͕ʹॻ͚ΔΩϟϯηϧ͕Ͱ͖ΔϑΣονͷProgressऔಘͰ͖ΔiOS 8~
NSPersistentContainer
Α͋͘ΔCore DataͷηοτΞοϓ
/41FSTJTUFOU4UPSF
/4.BOBHFE0CKFDU.PEFM/41FSTJTUFOU4UPSF
/41FSTJTUFOU4UPSF$PPSEJOBUPS /4.BOBHFE0CKFDU.PEFM/41FSTJTUFOU4UPSF
/41FSTJTUFOU4UPSF$PPSEJOBUPS /4.BOBHFE0CKFDU.PEFM/4.BOBHFE0CKFDU$POUFYU/41FSTJTUFOU4UPSF
/41FSTJTUFOU4UPSF$PPSEJOBUPS /4.BOBHFE0CKFDU.PEFM/4.BOBHFE0CKFDU$POUFYU/4.BOBHFE0CKFDU$POUFYU1SJWBUF2VFVF/41FSTJTUFOU4UPSF
ͭΒ͍
ॳݟࡴ͠
/41FSTJTUFOU$POUBJOFS NSPersistentContainer(name: "iOS10Sampler")
/41FSTJTUFOU4UPSF$PPSEJOBUPS/4.BOBHFE0CKFDU.PEFM/4.BOBHFE0CKFDU$POUFYU/4.BOBHFE0CKFDU$POUFYU1SJWBUF2VFVF/41FSTJTUFOU4UPSFNSPersistentContainer(name: "iOS10Sampler")/41FSTJTUFOU$POUBJOFS
It just works
NSPersistentContainer (iOS 10~)Α͋͘ΔCoreDataͷηοτΞοϓΛ؆ུԽطʹ͍ͬͯΔਓʹͨΓલ͔͠Εͳ͍͚Ͳͱ͖ͬͭʹ͘͞؇͞Ε͍ͯΔۜͷؙͰͳ͍ɻCoreDataΛ͍͜ͳͨ͢Ίʹ֮͑ͳ͚Ε͍͚ͳ͍͜ͱଟ͍ɻNSPersistentStoreDescription Λ͑ࡉ͔ͳઃఆมߋՄ
ReferencesiOS 10 Samplerhttps://github.com/shu223/iOS-10-SamplerWhat’s new in Core Datahttps://developer.apple.com/videos/play/wwdc2016/242/SwiftʴCore DataʹΑΔiOSΞϓϦϓϩάϥϛϯά (ํՆࢠɺ ؙࢁ߂ࢻ)https://book.mynavi.jp/ec/products/detail/id=50729
https://www.wantedly.com/projects/61105