DRYな備忘録

Don't Repeat Yourself.

iOS

【iOS】ビルドバージョンの自動インクリメントのSwift実装(PlistBuddyからの脱却)

背景 Xcodeのプロジェクトをやっていて、CI/CDなどを整えていると、iOSプロジェクトのビルドバージョン( 1.0 (N) のNの部分)を自動でインクリメントとかしたくなることがある。 PlistBuddyを使え macOSだとPlistBuddyというコマンドが/usr/libexec/PlistBu…

【iPhone】No such module 'RxSwift'

問題 pod installでRxSwiftをインポートしたつもりだが、ViewControllerでimport RxSwiftとすると、 No such module 'RxSwift' となり、もちろんビルドもRunもできない。 解決 .xcodeprojではなく、.xcworkspaceから開く。 No such module 'RestKit' with co…

iOSでFontAwesomeを使う【Xcode10.3】

※ Xcodeは変化が早いので日付に注意してください ゴール XcodeのiOSプロジェクトでFontAwesomeが使える 参考 TTFの追加: Adding a Custom Font to Your App | Apple Developer Documentation iOS : How to use FontAwesome in Xcode project. - Umair Hassan…

【iOS】ボタン長押しの実装【Xcode10.3】【Swift5】

※ Xcodeは変化が早いので記事の日付に注意してください ゴール 長押ししてアラートとか出るボタンを設置する tl;dr override func viewDidLoad() { super.viewDidLoad() let recognizer = UILongPressGestureRecognizer(target: self, action: #selector(onL…

【iOS】プロジェクト内に配置したjsonファイルの内容をSwiftyJSONで取得する

let filepath = NSBundle.mainBundle().pathForResource("message", ofType:"json") // 1. Resourcesっていうグループ(と物理ディレクトリ)作ってるけど、ファイル名だけでよい // 2. 返り値はnullable(String?)なので注意 let data = NSData(contentsOf…

【iOS】StackViewで子供のViewを3分の1幅にしたい【AutoLayout】

ゴール StackView(やAutoLayout)を使っていて、1/3分割にしたいときがある Multiplierに整数や小数は入れたことあるけど、分数(無限分数)はどうやって入れるんだ? 調査 stackoverflow.com 解決 StackViewで3分の1ってどうやるんだろと思ったら「1:3」(…

【Xcode】あると思うんだけどno matching provisioning profiles foundとか言われる

stackoverflow.com Preference Accounts View Details 今あるやつ全部捨てる(右クリック) Xcodeを殺す(← ここ重要) 再起動 Preference > Accounts > View Details で、「Download All」

Fabric/Crashlyticsで同プロジェクトの別bundle identifierのアプリを追加する

twittercommunity.com Xcodeにおいてbundle identifierを変更する Fabricデスクトップアプリにおいて「+ New App」というボタンがあるのでクリック 同プロジェクトを選択する チュートリアルが始まるが、だいたいのことは済んでるので、⌘+Bとか適当にしてチ…

【iOS】画面の向き(Orientation)を特定のページのみで制限したり許可したりしたい【supportedInterfaceOrientations】

ゴール たとえば 基本的にPortrait(縦向き)のみに制限したいんだけど、特定の画面だけではLandscape(横向き)を許可したい 特定のViewで、強制的に向きを変えることはできる けど、これは向きを変えるだけであって、ふたたび端末をぐるっとすると縦向きに…

SwfitでTableViewをつかってかっこいいフィードを実装するときに習得したことまとめ

いかんせんスケジュールがギリギリだったので、個別にエントリ書くのは無理でした TableView TableViewの各Rowの高さを指定したい tableView.rowHeight swiftでtableViewの高さを変更する - Qiita TableViewのボーダーを消したい tableView.separatorStyle =…

AlamofireとSwiftyJSONとSwiftTaskで、genericなprotocolを受ける汎用的なHTTPClientをつくりたい

iOS

問題 AlamofireとSwiftTaskで汎用的にレスポンスをモデルにデコードするようなHTTP Clientをつくりたい 特定のAPIエンドポイントのレスポンスをデコードするロジックは、各モデルにもたせたい SwiftJSONを受けて"何らかの"モデルにデコードするメソッドを持…

AlamofireでRequestのHeaderにContent-Type: application/jsonを追加したいのにいっこうに"text/plain"になってしまう問題

iOS

問題 そりゃ400だろ、って感じ。curl使って-H "Content-Type: application/json"ではちゃんとサーバからレスポンスあるのは確認済み。 やったこと1 : Alamofire.Manager.requestの第3引数にheadersを食わせる let headers = [ "Content-Type": "application…

cocoapodsでAlamofire入れようとしたらclang: error: linker command failed with exit code 1と叱られる

iOS

結論 % pod install Analyzing dependencies Downloading dependencies Installing Alamofire (3.4.1) Generating Pods project Integrating client project [!] Please close any current Xcode sessions and use `unko.xcworkspace` for this project from…

【2015年版】Xcodeで超簡単なWebViewアプリをつくってみる【iOS】【Xcode6.4】

2013年の記事↓ さすがに古いし、今回はSwiftつくってみようじゃないかということで。 Xcodeで超簡単なWebViewアプリを作ってみる【Xcode5.0.2編】 - DRYな備忘録otiai10.hatenablog.com 目次 プロジェクトつくる ViewControllerファイルを追加してStoryboard…

【iOS】NSUserDefaultsを削除

NSString *bundleId = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:bundleId]; 参考 iphone - Clearing NSUserDefaults - Stack Overflow DRY

【iOS】ディストリビューションビルド作成と申請についてメモ

メモ iPhoneアプリ、公開用ビルド作成までの手順 - えんたつの記録 Xcode4でiPhoneアプリをiTunes Connectに登録する方法 - えんたつの記録 【iPhone】XcodeでArchiveが選択出来ない No application records were found. - その場しのぎであたふたと App Sto…

【iOS】Timestamp to NSDate Object

Goal Get NSDate instance from timestamp-like NSInteger Solution Use dateWithTimeIntervalSince1970 method of NSDate NSDate *d = [NSDate dateWithTimeIntervalSince1970:timestamp]; DRY

【iOS】NSDictionaryからlongを取り出す

ゴール 以下のようなNSDictionaryから"Timestamp"をlongとして値を取り出したい // *dict { Number = 1408756029; Message = "hogeee"; } 解決 NSDictionaryのobjectForKeyを使ってから、longLongValueでキャストする long num = [[dict objectForKey:@"Fini…

【iOS】簡単なユーザ情報を保存したい【NSUserDefaults】

ゴール ユーザ名だったり、ユーザIDなど簡単なユーザ情報や設定などを永続的に保存したい 解決 NSUserDefaultsを使う ViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a n…

【iOS】AppDelegateからViewControllerを取得

問題 requestAccessToAccountsWithTypeなど、UIApplicationに帰属するメソッドのコールバックを受けてViewを変えたいときは、AppDelegateクラスの中でViewControllerを取得せざるを得ない(と思う)。ので、そのメモ。 ゴール AppDelegate内で、定義済みのVi…

【Go言語】Appleプッシュ通知を使う【APN】

ゴール 先日【iOS】Push通知の実装(サーバ編その1)【できた】 - DRYな備忘録においてRubyで実装した 今回はこれをGo言語でやる 記録 こういうのがある anachronistic/apns · GitHub 上記ブログで使用したRuby製のhoustonとの違いは クライアントを初期化す…

【iOS】アプリからHTTPリクエストを送る

ゴール iOSクライアントアプリから自前のサーバへHTTPリクエストを送る 結果をクライアントで取得する 記録 まず空のアプリつくる Xcode起動 SingleViewApplicationを選択してCreate New 実機に向けてrunして真っ白画面出ることを確認 詳細割愛 ミニマムなサ…

【iOS】デバイスのTwitterアカウント情報へアクセスする

ゴール Twitterアカウントへのアクセス許可要求ダイアログを出す 許可されたらTwitterアカウント名、IDなどを取得する 記録 まず空のアプリつくる Xcode起動 SingleViewApplicationを選択してCreate New 実機に向けてrunして真っ白画面出ることを確認 詳細割…

【iOS】Push通知の実装(サーバ編その1)【できた】

最終ゴール ApplePushNotificationを使ってサーバからクライアントにプッシュ通知を送りたい 今回のゴール クライアント側で得たデバイストークンに向けて とりあえずcliとか叩いて通知してみるだけ サーバアプリケーションは作らない 前回 【iOS】Push通知…

【iOS】Push通知の実装、できません!!(サーバ編その1)

最終ゴール ApplePushNotificationを使ってサーバからクライアントにプッシュ通知を送りたい 今回のゴール クライアント側で得たデバイストークンに向けて とりあえずcliとか叩いて通知してみるだけ サーバアプリケーションは作らない だけどイマイチ動かな…

【iOS】Push通知の実装(クライアント編その1)

最終ゴール ApplePushNotificationを使ってサーバからクライアントにプッシュ通知を送りたい 今回のゴール クライアント側でユーザにプッシュ通知の許可をもらうダイアログを出す クライアントを一意に決定するトークンを取得する 記録 とりま資料を見る WWD…

【iOS】【Android】複数WebViewインスタンス間でsessionStorageを共有

localStorage使え DRYな備忘録として

Android/iOSのWebViewでEvaluateJavascript的サムシング

iOS iOSのWebViewインスタンスには、stringByEvaluatingJavaScriptFromStringというメソッドがある. [webView stringByEvaluatingJavaScriptFromString:@"window.alert('田井中律は俺の嫁');"]; Android AndroidのWebViewインスタンスには、「JavaScriptを実…

iOSシミュレータに写真を入れたい

問題 XcodeのiOSシミュレータ、起動した初期状態では「写真」に画像がひとつも無いので、画像選択のデバッグとかできなくて困るでござる 解決 シミュレータのSafariを開く PCのFinderで画像を選択し、シミュレータのSafariにドラッグ&ドロップする シミュレ…

provisioning無いけどipaを実機にぶち込むメモ

メモ ipaを手元にダウンロード xcodeのツールバー[Organizer]選択 [Devices]を選択 横のリストの実機んとこ(つなげてないと出ない)の[Applications]を選択 ipaファイルをドラッグアンドドロップ おしまい