カテゴリー別アーカイブ: Xcode

【Swift4】NotificationCenterの備忘録。

参考ページの劣化コピーの備忘録です。
詳しくは参考ページを見てもらったほうが良いかと。(-人-)

以下参考ページ。
iOSTraining/3-4_Notification-NotificationCenter.md at master · mixi-inc/iOSTraining · GitHub
[Swift3.1] NotificationCenterを使ってViewController間でイベント通知を送る – Qiita

NotificationCenterを使って通知のやり取りをしたい。

☆まずは通知を受け取りたい側にaddObserverの登録

viewDidload等で登録をしておきます。

通知を受け取って動作するメソッドcatchNotificationを実装

☆通知を送りたい側のVCに通知をPostする処理を書く。

通知を送りたい箇所でPost

多分これで通知が送られるはず。/(^o^)\

参考サイトではNotificationCenter.defaultをインスタンスにしてたり、
Extentionでの拡張により .myNotificationName というのを使っていたりしますが、
僕の頭ではよく理解できませんでした。/(^o^)\
多分あれだ、いっぺんに通知の名前を変更する時に打ち間違いや、やり残しをなくすためだな。/(^o^)\

【Swift4】言語設定、書式設定、通貨コード、通貨シンボル

アプリ内課金の多言語化を調べててなんかややこしかったんと、
NSLocaleからLocaleに変わったとかでとりあえず備忘録。

参考サイトはこちら。
[Swift] 通貨コード/シンボル :: カテル開発ブログ
通貨 – NSLocale Swift 3 – スタックオーバーフロー
Locale.current.regionCode

実行するとこんな感じで書き出される。

languageCode(言語設定) = en
regionCode(書式設定) = US
currencyCode(通貨コード) = USD
currencySymbol(通過シンボル) = $

うじゃうじゃ。

p.s.
その他の参考ページ
iOSアプリの国際化対応の勘所とTips集(Swift版) – Qiita
Xcode 6で導入されたstringsdictファイルを使って、イケてる複数形多言語対応 – Qiita
iOS Tips #3 NSNumberFormatterで数値を文字列に変換する | Developers.IO

【Xcode9.0】アプリ内課金のシミュレータでエラー(SKErrorDomain error 0.)

アプリ内課金を書いてて、なんでか
「Cannot connect to iTunes Store」とか、
「The operation couldn’t be completed. (SKErrorDomain error 0.)」というエラーが出る。
ぐぐってみたところSKProductsRequestが問題っぽい。

アプリ内課金で、プロダクト情報を取り出そうとした時にエラーが返ってくる。
iOS11のシミュレータだとエラーが出るらしい。
実機やiOS10以前のシミュレータだと大丈夫っぽい。

先人に感謝。(-人-)

>

【swift3】segueで遷移先からコードで戻る方法

久々にxcodeをいじってて、segueで遷移した先のページからコードで戻る方法がわからず難儀した。

答えはこちらに有った。
『Swift』コードで画面遷移させたいときの方法 | ホホブクログ

例えばボタンで戻る場合、exitに繋いでも良いんだけど、コードで書くとこんな感じ。

これを調べるんに半日費やしたわ。/(^o^)\
うじゃうじゃ。

navigationbar、navigation itemのこと。

navigation controller とかまだ全然理解できてないなーと思う。

navigation controllerで上下関係?が作られるとそのview controllerには自動でnavigationbarがつく場合とつかない場合がある。
違いがよくわからん。

Storyboardでnavigation controllerを使い、出来たテーブルビューから更に下の階層を作る時につなげたview controllerに自動でnavigationbarが付く場合のやり方が分からず困った。

なんとなくそれっぽくうまく行ったので自分用備忘録。

下階層に繋げる新しいview controllerを置く。

navigationbar、navigation itemのこと。

上の階層から右クリックのドラッグで新しいview controllerに接続。
ダイアログが出るので、showを選択。

navigationbar、navigation itemのこと。

無事にnavigationbarがついた。

navigationbar、navigation itemのこと。

そんだけのことだけどわからないと困るし、結構悩んだ。/(^o^)\
うじゃうじゃ。

could not build module googlemobileads というエラー

Xcodeを7から8にアップデートして、
環境を2009のmacminiから2016のMacBook Proに移行して、
何が原因だかわからんが、ちょっと前に作ったアプリをエミュレーションで起動しようとしたらエラーが出た。
Objective-cで作ったアプリだ。

エラーメッセージはこんな感じ。
could not build module googlemobileads

どうもGoogleMobileAds.hが見つからん的なエラーが幾つか出る。
ぐぐったところimportの書き方を変えてみる的な記事が出てきたがそれでは治らんかった。

cocoa podでインストールしたものを削除して再インストールしてみたらどーかなとやってみた。

参考サイト
CocoaPodsのアンインストール方法 · Yukim Log

podファイルで
pod ‘Async’
だそうだ。

↓podファイル

んでもってターミナルから実行。

ディレクトリは移動しておこうね。ヽ(^。^)ノ

んで、アプリ.xcworkspaceも削除。

再度podファイルを編集

んで、ターミナルから実行。

新しく.xcworkspaceファイルも作られて、エラーが消えました。\(^o^)/

【Swift3】配列の番号と剰余算と条件演算子?:

先日、友人の書いたSwiftのコードを見ていた。
その中でやっていることは何となく分かるが、どういう演算子(というのか?)を使っているかわからない部分があった。

やっていることは配列を順番に呼び出すため、配列の番号を1ずつ加えていって配列の最後に来たら最初に戻るというのと、
配列の番号を1つづ引いていって最初まで戻ったら最後の番号に移動するという関数です。

配列の変数はstrArray
番号を入れる変数をpositionとして、

自分が普通に考えたら、if文を使って
最初の加えていく関数は、

こんな感じで書くかな?

それを友人は

と書いていた。

調べてみると、「%」は剰余算の演算子です。
x % Y の場合xをyで割った余りが求められます。

例えば、配列strArrayに入っている要素が5つだとすると、配列の番号positionにはいるのは0,1,2,3,4となる。

positionが3の時、次の番号を求められると、(3+1)わる5 は 0あまり4で4が返される。
positionが4の時、次の番号を求められると、(4+1)わる5 で 1あまり0で0が返される。

うーむ非常にスマートに書かれている。(^_^;)

続いて1ずつ引いていく場合自分が書くと、

こんな感じかな?

それを友人は

と書いていた。

(; ・`ω・´)
なんだこれ?なんで一行で?

いろいろ調べた結果、
参考サイト
C言語の演算子について

条件演算子と言うものらしい。

a ? b : c aが真ならbが実行、aが偽ならcが実行。

つまりpositionが0であればstrArray.countから1引いたものを返す、
そうでなければpositionから1引いたものを返す

ということでやってることはif文と同じですね。

しかしスマート。

こういう書き方はふつうにC言語とか習ってる人は知ってるのかなあ?

20数年前のBASICから独学でObjective-cに飛んだ私には分からない(;´∀`)

ま、人様のコードを読むのは勉強になりますね。

【Swift3】【override】と【prepareForSegue】

UITableViewを書いててsegueで遷移する時のprepareForSegueのoverrideがエラーで困った。

Method does not override any method from its superclass
と表示される。
当然overrideしなければprepareForSegueは呼ばれない。

参考サイト
ios – swift 3 prepare(for segue: ) function broken? – Stack Overflow

なんか知らんが書き方が変わったらしい。

とゆーことでうまく行った。
うじゃうじゃ。

【Swift3】遅延処理。

何秒後に処理を遅らせたい、とゆー時には遅延処理。

Swift3になって変わったそうです。

参考サイト
Swift 3での遅延実行 – Qiita

【Swift3】【UIButton】setTitleのビミョーなアニメーション。

UIButtonに表示される文字は変更できる。

参照サイト
002 UIButtonでボタンを表示 · GitBook

こんな感じだ。

この時よく見ると?アニメーションで薄くなって消えて新しい文字が現れてくる。

これを止めてぱっぱっと変わってほしかったのだが、なんか無いか調べてみた。

参考サイト
UIButton.setAnimationsEnabled(false)

ぱっと調べた感じ、

これでアニメーションがなくなるらしい、
しかし、個別のボタンには対応してないようで、さらに縦画面から横画面へのオートレイアウトの遷移のアニメーションもなくなっていた。

使い所を考えてしまう。