面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

Swift

某SNSで購入できる画像セットを他でも使えるようにDLできるプログラム書いた

経緯 某SNS(LI○E)で買える40枚1セットの画像は、そのSNS上でしか使用できず、Twitterとかでも使いたいと思ってた。 そのSNSの画像用StoreがWebページでも存在していて、サンプルのように画像が閲覧できるので、これをDLして使えばいいのでは?という発想に至…

OSSのようなFramework ProjectをPlaygroundで動作確認する方法

前説 OSS内にPlaygroundが含まれている場合、そのPlaygroundを弄って動作を確認することは容易です。しかし、Playgroundは、含まれていないけどPlayground上で動作を軽く確認したい! 軽く確認するためにTest Project作ってPodsやCarthageでOSS引っ張ってく…

R.swiftとWARNで競合したので解消した

WARNの説明 Obj-C時代は、#warningを書いて意図的に警告を表示し、後から対応する等のメモがわりに使用していた。(他にそういう人は多いはず) で、これがSwiftになると使えないので、// WARN:を書いたら同じように警告を表示するようにRun Scriptを入れるわ…

didSetの挙動

didSetの挙動 Swiftでは、Propertyに対してdidSetで処理を書いてあげることが多く、この時呼ばれるの?呼ばれないの?と疑問に思うことがしばしばあって、テストしていたのでまとめておく。 値型と参照型で異なる点は言わずもがな気をつけなければいけない。…

NavigationItemのLeftBarButtonItemsにitemを入れるとBackボタンが表示されなくなるやつの対処

経緯 割と当たり前だったりすることでも、知らないことも多々あるので、今回そんな例として今更知った内容のメモとして記載 内容 UINavigationControllerから pushViewController(UIViewController, animated: Bool) で次のViewControllerに遷移するのは珍し…

NSPredicateを使うと@を全角半角区別してくれない

emailのvalidationメソッド 業務中、emailのvalidationメソッドをいじることになって知った話 下記のようなコードでemailのvalidationチェックを正規表現を行なっていたのだが、 @ が全角でも true が返ってきてしまうことが発覚した。(emailの正規表現に関…

UIColorの比較で単純に==や!=してはいけない話(Swift3コード追記)

UIColorの比較の注意点 UIColor同士を比較する際、==や!=で比較することは可能。 しかし、安易にこの比較を行なった場合、意図しない挙動になることもある。 その例が下記となる UIColorの作成時、white値を指定して作成することもできれば、rgba値を指定し…

Swiftでsuper.init()前にプロパティを初期化しなければいけない理由

前提 Swiftで独自クラスを作成してinitメソッドを書く時、 この独自クラスが持つプロパティの初期化をsuper.init()の後に行って エラー( Property 'self.property' not initialized at super.init call )に会う人は少なからずいると思う。 Objective-Cでは、…

UIImageのRenderingModeのサンプルコード

1枚の画像で色だけ変えて使いまわしたいと思ったものの、 色の数だけ画像を用意するのも大変だし、動的に色を変えるのも難しいと思い、 いい方法がないか調べたところ、UIImageにRenderingModeなるものが存在することを今更知った。今回下記画像を用意し、実…

Swiftで値が含まれるかif文で判定する方法

qiita.com上記記事をひょんなことで知って、そんな書き方もあるのか!!と目から鱗状態になり、 記事が少し古いから今のSwiftで使えるか確認しつつ気になったことをPlaygroundで検証してみた。 (たぶん自分がまだ無知なだけで、Swift慣れている人は知ってい…

iOS10+FirebaseでPushNotificationの最小実装

iOS10でPushが大きく変わるってことで、以前にちょろってどんな実装になるか試そうとしたことがあったけど、 時間都合により実装できずに終わった。時間が取れたので改めて実装する。 また、前回やろうとした時、Parse.comからPushを送るテストをしていたが…

WWDC2016のページのまとめ(2/2)

1ページに収め切るのきつかったので、WWDC2016の情報を分割してまとめ。 基本自分の興味と関係がありそうなところを抽出。 WWDC2016 Video WWDC 2016 - Videos - Apple Developer macOS Sierra developer.apple.comdeveloper.apple.com developer.apple.comd…

CGFloatを使う時の注意点

Objective-CやSwiftを使ってiOSアプリを開発する時、小数点使用する型は8割CGFloatを使う。 このCGFloatを使う時に Use of undeclared type 'CGFloat': did you mean to use 'CGFloat'? というエラーが出たことがあった。 解決方法は単純に、UIKitをimportす…

presentedとpresentingの違い

たまにpresentedviewcontrollerとpresentingviewcontrollerの違いがわからなくなるのでメモA presentViewController B B presentViewController C となった時、画面手前から奥にかけてC > B > Aの階層になる。この時、Bから見て…、 - presentedviewcontrol…

Localizeで苦戦した備忘録

知人らと少人数チームでアプリの開発をしているのだけど、英語でしかリリース予定ないとは言え今後を見据えて勉強がてらLocalizeをやろうとしたら嵌った。色々やり方とか調べたり、過去関わったプロジェクトを思い出してこんなファイルがあって…とか試行錯誤…

Switchのcase網羅とif文のコメントの書き方

今日の備忘録 Switchをenum値で書く場合、defaultを使わない SwiftのSwitchはパターン網羅のため、原則defaultパターンを書かないとエラーになる。 ただ、enumを使う場合であれば、全部のenum値のcaseを書くことでdefaultパターン書かずにすむ。 そうするこ…

SwiftとObjective-Cの相互利用と注意点

今であれば新規プロジェクトはSwiftで作られるだろうし、既存プロジェクトであればObjectie-Cで作られており、メンテナンスもObjective-Cで行われるのが大半だと思う。たまにあるであろう、SwiftとObjective-Cの共存するプロジェクトで相互利用するための方…

Swiftのライブラリサイト「Swift Modules」

仕事では、いまだそんなに触れる機会が訪れないだよなーSwiftは。 あと個人的にライブラリって継続してサポートする保証がないから個人的にはあまり好きじゃない。アプリを作っておしまい!サポートは新iOSとかしないよ!みたいな作りっぱなしであれば その…