サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
blog.sgr-ksmt.org
Swift 3が正式にリリースされてからもう2週間くらい経って、少しずつSwift 3を紐解けてきている感があります。お久しぶりです。 最近は自分で作成していたOSSのSwift 3対応を進めているので、気づいたこととかあったらぼちぼち書き溜めていこうと思います。 今回は「デフォルトで関数の返り値を使わない時に警告がでるようになった」について書いていきます。 デフォルトで関数の返り値を使わない時に警告がでるようになった どうやらSwift3からは、デフォルトの挙動として返り値のある関数を使用した時に、 その返り値を使わない場合に警告がでるようになりました。 func addTwo(_ num: Int) -> Int { return num + 2 } // 警告がでる addTwo(2) // Result of call to `addTwo` is unused. // 戻り値を変
tech-blog.sgr-ksmt.org
RxSwiftで良くDataSourceもしくはあるデータの配列をUITableViewやUICollectionViewにbindさせる時に それをより安全にしたり、bindしつつcellに必要なパラメータを渡せるようにパワーアップさせてみます。 ちなみに例ではRxDataSourceは使わず、データの入った配列をbindする想定でやっていきます。 Cellの型を渡すだけで済むようにする UITableViewとデータの配列をbindするときに使う関数の中で、次のような関数が用意されています。 func items<S: Sequence, Cell: UITableViewCell, O : ObservableType> (cellIdentifier: String, cellType: Cell.Type = Cell.self) -> (_ source: O) -> (_ c
Swift3移行時に、ビルドする度沸いて出て来るエラー。 それを直したと思って再度ビルドしても またでてくる…。 そんな時に、、ちょびちょびではなくて一気にエラーの箇所を出して修正していきたい場合は、Xcodeの設定を少し変えるだけでよくなります。 Xcodeの設定画面を開く 「cmd + ,(カンマ)」で設定画面を開き、「Continue building after errors」の項目にチェックを付けます。 これで、ビルドしてエラーが出たとしても、全体を通してビルドが終わるまで続けてくれます。 ただ、普段使う時は、エラーがある時点でビルドが止まるほうが良いので、使う必要がなくなったらチェックを外しましょう。
前からプロジェクトに便利そうだなーって思ってとりあえずCarthageで入れたものの、存在を忘れてて整理してたらこれ便利じゃんってなったので忘れぬうちに記事にします。 毎回DisposeBagを作る…のだるい! RxSwiftで書いているとほぼ毎回でてくるこのDisposeBag。だいたい、 import UIKit import RxSwift class HogeViewController: UIViewController { let disposeBag = DisposeBag() // ←毎回定義して... @IBOutlet private weak var button: UIButton! override func viewDidLoad() { super.viewDidLoad() button.rx_tap .subscribeNext { _ in print
Swift3.0でautoreleasepoolが強化されたようなので。 はじめに Swift3.0-preview1時点でのお話となります。 Swift3時代のautoreleasepool Swift3時代のautoreleasepoolでは、いままでできなかった2つのことが可能になります。 値を返却することができる エラーハンドリングができる それぞれ順に見ていきます その前に autoreleasepoolは以下のように宣言されています。 public func autoreleasepool<Result>(_ body: @noescape () throws -> Result) rethrows -> Result Generics 、 @noescape 、 throws,rethrows が使われています。 ちなみに、Swift2時代までは、 public func a
Githubのwatchで、swift-evolutionにどんな提案が追加されたのか、 accept されたのか見たりしているのですが、 最近みていて気になったものがあったのでピックアップしてみました。 SE-0068 一部の例はproposal内のものを引用したりしています。 (※この記事では完全な和訳などはしていません。要点絞って自分の解釈で書いております。) “Expanding Swift Self to class members and value types” 今まで、Selfは自分自身の型を指すものとして使われていて、特にプロトコルと相性が良いものでした。 protocol HogeProtocol { func myType() -> Self } // HogeProtocolを適応する class Fuga: HogeProtocol { // ここでSelfはその
昨日今日で自分用のSwiftライブラリの整理をしている中で、 StoryboardからViewControllerを生成するProtocol をリファクタリングしつつ綺麗にまとめたので、記事にしてみようと思います。 この、 StoryboardからViewControllerを生成するProtocol 自体は前から色々な人がQiita等にまとめていて、物によっては structやenum を活用した方法もあったりします。 そうした記事を参考に自分も自分が扱いやすいようにProtocolを作って運用していましたが、改めてリファクタリングしてより扱いやすくまとめたので、紹介してみようと思います。 ソース public protocol StoryboardInstantiatable { static var storyboardName: String { get } static var
僕がSwiftを使っていて不便だなって思うことの1つに、 OptionalなBool型の条件判定の仕方が面倒というのがあります。 特に、Optional Chainingを使った場合なんかによく遭遇します。 例えば、ログイン中のユーザーがプレミアム会員かどうか判定するときに、 // ログインユーザーが存在して、プレミアム会員の場合という条件式 if UserManager.shared.loggedinUser?.isPremium ?? false { print("Premium user!!") } こんな感じでログイン中ならuserオブジェクトが、非ログインだとnilがloggedinUserに格納される場合なんかに、 loggedinUserがOptionalな型であることでこのなんともいえない条件判定式が出来上がってしまいます。 慣れればどうってこともないのですが、 毎回Opt
すっごい簡単なものですが、 viewWillAppear: が呼ばれたのをトリガーにするObservableを定義してみました。 これで、 viewWillAppear がcallされた時をトリガーにして、リロード処理をする等できます。 定義してみる 内容はとても簡単で、extensionでNSObjectに対して実装されている、 _rxsentMessage(:)_ を使ってあげるだけです。 引数にselectorを渡してあげることで、その関数が呼ばれた時を捕捉することができます。 import Foundation import UIKit import RxSwift extension UIViewController { private func trigger(selector: Selector) -> Observable<Void> { return rx_sentMes
仕事を終えて家でぼちぼちXcode7.3で作ったライブラリのプロジェクト開いてうんうん唸っています。どうも。 今日はとりあえず、人の目に多く触れそうなものから修正しました。 enumの列挙子を配列で取得するのをprotocolで 今回修正した内容は、 typealiasをassociatedtypeに変更 anyGenerator() 関数を AnyGenerator のイニシャライザに変更 EnumerateSequence のイニシャライザを AnySequence.enumerate() に変更 です。 Swift2.1.1からSwift2.2になることで、Warningがでたりするので、ぼちぼち変更していく感じです。 少し、 AnyGenerator 、 EnumerateSequence に関して掘り下げて見ていきます。 anygenerator() 関数を変更する anyGen
RxSwiftでは、処理をどのスレッドで実行するか指定するSchedulerが用意されていて、 このSchedulerをセットすることで、それぞれの処理に対して実行するスレッドを指定できます。 その時のSchedulerの作り方と、Schedulerを使う時にお行儀よく扱うための備忘録兼ねたメモです。 (本当にメモ程度に書いてるので所々表現おかしかったりするかもです。ゴメンナサイ…) それぞれのScheduler メインスレッドで実行するScheduler let mainScheduler = MainScheduler.instance MainScheduler.instanceを呼び出してあげれば良いようです。 このMainSchedulerは シングルトン になっているので、都度作られることはないようです。 中身を除いてみると、処理を内部で実行スレッドをチェックしたあと、必要があ
このページを最初にブックマークしてみませんか?
『blog.sgr-ksmt.org - xerchingslanri1974』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く