これははてなエンジニアアドベントカレンダー2022の40日目の記事です。昨日は id:kouki_danのCI/CDサービスのOpenID Connect対応 Dive Intoでした。 16年前の今日、2007年の1月9日は初代iPhoneが発表された日です。思い返すと、初期のiPhoneネイティブアプリ…
ConcurrencyのTaskをCombineのPublisherのように自動キャンセルしたいとき、以下のようなものを用意しておくと便利かもしれない。 extension Task { public func store(in set: inout Set<AnyCancellable>) { set.insert(AnyCancellable { self.cancel() }) } } var cancella</anycancellable>…
基本 let container = NSPersistentContainer(name: "Sample") NSPersistentContainer.init(name:) By default, the provided name value is used to name the persistent store and is used to look up the name of the NSManagedObjectModel object to be …
NSPersistentContainer.loadPersistentStores(completionHandler:)のcompletionHandlerは、デフォルトではloadPersistentStoresを抜ける前に同期的に呼ばれます。 理由 NSPersistentContainer.persistentStoreDescriptions[0].shouldAddStoreAsynchronously…
iOS 13 Core DataとCloudKitを統合したNSPersistentCloudKitContainerが追加された Using Core Data With CloudKit - WWDC 2019 - Videos - Apple Developer iOS 10 NSPersistentContainerが追加された What's New in Core Data - WWDC 2016 - Videos - Appl…
Core Dataで、Lightweight Migration で済む場合、アプリが持つManaged Object Modelは最新の一つだけでよいようです。 つまり、次のように、複数のモデルを持つ必要がありません。 xcdatamodeldに最新のバージョンのxcdatamodelだけを持つか、単純にxcdatam…
検証環境 Xcode 12.5 手順 ドラッグ操作を開始する ctrlキーを押しながら、マウスボタンを離す マウスボタンを離したら、ctrlも離してよい マウスボタンを離した位置に、1本目の指を押しっぱなしにしていることを示す円が表示される 次からのマウスボタンタ…
Xcode Workspace(xcworkspace)には複数のXcode Projectを束ねて、暗黙の依存関係を持たせる機能があります。 Xcode Workspace (Xcode Concepts) 例えば、アプリ本体のxcodeprojとライブラリのxcodeprojをWorkspaceで束ねると、アプリ本体側からライブラリxco…
第56回 Cocoa勉強会関西で、『1画面から始めるStoryboard』というテーマで発表しました。 1画面から始めるStoryboard from Yuichi Fujishige iOS 4時代から開発しているプロジェクトで、既にXIBが沢山あって全面的にStoryboardに移行するのは大変、という状…
第49回 Cocoa勉強会関西で、Audio Queue Servicesでのサウンド再生の初歩について発表しました。 Audio QueueでSin波再生 from Yuichi Fujishige Audio Queue Services Programming Guideではファイルを読み込んで再生するという例で説明がなされていますが…
第47回 Cocoa勉強会関西で、 『iOS 6 のAuto Rotation』について発表しました。 iOS 6 のAuto Rotation from Yuichi Fujishige スライドの補足 window.rootViewController必須 window.rootViewControllerが設定されていない場合うまく動きません。rootViewCo…
第45回 Cocoa勉強会関西で、 『CAKeyframeAnimation』について発表しました。 CAKeyframeAnimation from Yuichi Fujishige サンプルコード https://github.com/nakiwo/KeyFrameSample
第44回 Cocoa勉強会関西で、 『Core Animationの明示的アニメーションで表示が元に戻る問題』について発表しました。 Core Animationの話 Part.1 from Yuichi Fujishige サンプルコード https://github.com/nakiwo/CoreAnimationSample1
iOS 5.0.1 で、"do not back up" というファイル属性が追加されました。 この属性はどういう時に使うのでしょうか。 Technical Q&A QA1719 How do I prevent files from being backed up to iCloud and iTunes? http://developer.apple.com/library/ios/#qa/…
第41回 Cocoa勉強会関西で、 iOS 5で追加されたUIViewControllerのコンテナ機能について発表しました。 UIViewController のコンテナ機能 from Yuichi Fujishige サンプルコード https://github.com/nakiwo/ViewControllerContainerSample