Book The Complete Friday Q&A, advanced topics in Mac OS X and iOS programming. GitHub My GitHub page, containing various open-source libraries for Mac and iOS development, and some miscellaneous projects
それでは、『SwiftのOptionalのベストプラクティス』というタイトルで発表します。 #swtws pic.twitter.com/OJfz2tk4sP — koher (@koher) 2017年4月15日 2 年程前、 Qiita に『SwiftのOptional型を極める』というタイトルで投稿をしました。内容は、 Optional とは何かという説明と、 Optional の使い方を合わせたものでした。 しかし、 Swift 1 だった当時と比べると Optional 周りの状況は大きく変わり、特に使い方の部分が適切ではなくなってきました。また、僕のSwift経験値もたまって、新たな知見も蓄積されてきました。 今回の投稿では、 Swift の Optional 周りを整理し、いつ・どのように Optional を使うべきか、僕の考えるベストプラクティスを紹介します。 全体を通し
前置き 最近のオープンソースなSwift製ライブラリは、Embedded Frameworkとして使うことを前提としているものが多いです。それらをiOS 7対象のプロジェクトで使う場合にはソースコードを直接取り込むしか方法がないのですが、他のライブラリに依存しているライブラリは、コード中にimport DependentLibraryやDependentLibrary.SomeClassなどと出てくるので、そのままでは使うことができません。 「RxSwiftをiOS 7で使う」のようにプロジェクトに直接取り込む方法を用意しているライブラリはそれを使います。そうでないライブラリの場合はソースコードの改変が必要になります。しかし、importだけならソースコードを改変せずにごまかすことができるんじゃないかと思いました。 要するに、例えばimport DependentLibraryと書かれてい
RxSwiftに付属のサンプルプロジェクト「RxExample」にはiOS版とOS X版があって、その中の一つにDynamic Framework(その用途からEmbedded Frameworkとも呼ばれる)ではなく、RxSwiftのソースコードを直接プロジェクトに追加する形で構成されている「RxExample-iOS-no-module」というターゲットがあります。 そこで用いられているやり方を使って、RxSwiftをDynamic Framework非対応のiOS 7で使ってみます。 RxExample-iOSとRxExample-iOS-no-moduleの違い RxSwiftとRxCocoaのソースコードがプロジェクトに追加されている import RxSwiftやimport RxCocoaを無効にするフラグをつけてビルドされている 一部のObjective-CのコードをBri
仕様の簡略化 実装を楽にするために仕様を簡略化しています。 入力猶予フレームは全入力間で7フレームに固定する(小昇竜の仕様) 同時押しはサポートしない 押しっぱなしやニュートラルは考慮しない 格ゲーのコマンド判定ロジックって、ちゃんと考えると結構複雑ですね…。 実装 extension ObservableType where E == 入力 { func 昇竜拳(scheduler: SchedulerType) -> Observable<[E]> { return self .scan([]) { Array(($0 + [$1]).suffix(4)) } .timeout(8 / 60, scheduler: scheduler) .retry() .filter { $0 == [.右, .下, .右下, .パンチ] } } } 「ズンドコキヨシ with RxSwift」のと
前作「ズンドコキヨシ with RxSwift」は、とりあえずサクっとRxSwiftで書いてみたバージョンだったので、ちゃんと動いてはいるもののいくつか不満がありました。 出力がdoOnNextとsubscribeCompletedに分かれている 終了判定のために本流のストリームを変形している リズム感アップのためにキ・ヨ・シ!前にタイミング調整をしている scanを使っているところにRxっぽさが欠けるw 上記を解消しようと色々試行錯誤した結果、できたのが以下です。自分の中ではこれを最終版としました。 import Foundation import RxSwift enum ズンドコ: UInt32 { case ズン case ドコ } let ズンドコ川 = Observable<Int>.interval(0.5, scheduler: MainScheduler.instance
John さんの Swiftならこう書くシリーズ 10選 を拝見して、こう書いたらもっと楽しくなりそうと思ったところがあったので、補足もしつつ紹介してみようと思います。 この記事は上記のブログみたいに「Objective-C と対比して分かりやすく」みたいには書いていないので少し難しい感も漂いますけど、ブログを読んだ後の次のステップとして読んでもらえたら幸いです。 10. 配列の操作ならSwiftの SequenceType メソッドを使用する Swift の配列は SequenceType という仕組みに則って作られています。それと同時により配列らしい性質を提供する CollectionType という仕組みにも則っています。せっかくの配列なら CollectionType も合わせて注目すると、もっと楽しくなりそうです。例題に出てくる indices も CollectionType
Eureka EngineeringLearn about Eureka’s engineering efforts, product developments and more.
Making Sequences work for you こんにちは! VASILYのiOSエンジニアにこらすです。 SwiftのコントリビューターとSwift EvolutionSE-0053の作者です。 他のOSSプロジェクトにも貢献してるので興味があればGithubでフォローしてください。 今回のトピックはSwift2.0以降のSequenceTypeというプロトコルと、その内部的な動きについて紹介します。classやstructをSequenceTypeプロトコルに準拠させると、for inループやmap, filterなどを使えるようになります。 さあ、始めましょう! struct Unique<T: Comparable> { private var backingStore: [T] = [] var count: Int { return backingStore.cou
注意 現在X(旧Twitter)でのソーシャルログインができない事象を確認しています。事前にX(旧Twitter)側で再ログインした上でconnpassのソーシャルログインを行うか、 「ユーザー名(またはメールアドレス)」と「パスワード」の組み合わせでのログインをお試しください。合わせてFAQもご確認ください。 お知らせ 2024年9月1日よりconnpassサービスサイトへのスクレイピングを禁止とし、利用規約に禁止事項として明記します。 9月1日以降のconnpassの情報取得につきましては イベントサーチAPI の利用をご検討ください。 お知らせ connpassではさらなる価値のあるデータを提供するため、イベントサーチAPIの提供方法の見直しを決定しました。2024年5月23日(木)より 「企業・法人」「コミュニティ及び個人」向けの2プランを提供開始いたします。ご利用にあたっては利用
JSONRPCKitという、SwiftでJSON-RPC 2.0を扱うライブラリを作っているときに必要になったので作ってみました。 文字列または数値のみを許容する型を作る JSON-RPC 2.0のidは文字列か数値をとる仕様なので、その制限を型で表現してみました。以下のようにenumを使うと簡単です。 public enum RequestIdentifier { case NumberIdentifier(Int) case StringIdentifier(String) } extension RequestIdentifier { public init?(value: AnyObject) { switch value { case let number as Int: self = .NumberIdentifier(number) case let string as St
こんにちは!iOSエンジニアのishkawaです。 3/2から3/4にtry! Swiftが開催されますね。 もちろん、メルカリも協賛しています! try! Swiftは世界中のSwiftデベロッパーが集まるカンファレンスです。登壇者の多くが海外ゲストであり、RealmやSwiftLintなどを開発しているJP Simard氏、”Functional Programming in Swift”の著者であるChris Eidhof氏、QuickのコアチームのJeff Hui氏などが登壇し、日本からはReactiveCocoaやCarthageのコミッターであるSyo Ikeda氏などが登壇します。 また、メルカリからは僕が登壇しますので、セッションを紹介させてください。 Protocol-Oriented Programming in Networking Protocol-Oriented
URLYou can post either your article on Qiita or your blog post. About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)
Published on 04 Sep, 2015 Protocols in Swift can be generic via abstract type members rather than parameterisation. Consequently, the protocol itself can no longer be used as a type but only as a generic constraint. The Problem If you tried to use a generic protocol as a type as follows: protocol GenericProtocol { typealias AbstractType func magic() -> AbstractType } let list : [GenericProtocol] =
About the content This content has been published here with the express permission of the author. So you’ve got a huge view controller that knows about everything. It’s become a puppeteer mastermind whose responsibilities have somehow grown to simultaneously encompass disk I/O and navigation bar styling. Andy Matuschak live codes solutions to reduce the size of the beast, and refactors out its res
第21回オープンラボ岡山の発表スライド http://openlab.okaya.ma/wiki.cgi?page=%CA%D9%B6%AF%B2%F1%2F%C2%E8021%B2%F3
About the content This content has been published here with the express permission of the author. Promises are a well-known design pattern used to delay evaluation of future values, and to pipeline operations in an asynchronous manner. Typically, there are three internal states used to control the behavior of promises, but there is a lack of core interfaces essential to iOS & OS X development. To
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く