もぶわさおの「ダメ人間さんいらっしゃい」ブログ

技術系ブログにしたかったのにそうもいかなくなったけど、閉鎖するのもアレだからなんか書くブログです

xcodeのプロジェクトにテキストファイルを追加して読み書きしたいのだが・・・

プロジェクトにファイルを追加して、それを読んだり書いたりしたとき、以下のようにするといいらしい

(Simulatorの方にファイルが転送されていたので正しいものと思う)

①Resourcesフォルダを切って、送りたいファイルを保存する

②プロジェクトを選択し、「New Group」から「Resouces」を作成

右側のペインの「Full Path」を①で作成したフォルダに設定する

(Full Pathの右上にあるフォルダアイコンを押下するとフォルダを変更できるよ)

③②で作成したGroupにファイルを追加する

(Groupを選択し、「Add File to …」から①のファイルを追加してやる

④一応確認だが、ビルド設定の「Build Phases」の「Copy Bundle Resources」に①のファイルが出ていることを確認する

f:id:mob-wasao:20170316110155j:plain

(※上の例では、Station.csvというファイルを追加して転送できるように設定した)

あとは下のソース

let bundle = Bundle.main

print((bundle.path(forResource: "Station", ofType: "csv"))!)

print("bundle:" + bundle.bundlePath)

これで設置されたファイルのパスがわかるのでファイルを開いてやればいいようだ

segueによる画面遷移の際、右から左への画面への画面遷移ができない

画面遷移を行う際、segueという仕組みを利用する

で、その遷移の話として「右方向の画面へ遷移していく」表示方式を取りたかったのだが、「下から上へ出てくる方式」しかできなかった

まずは以下のようになっている

f:id:mob-wasao:20170315113242j:plain

検索ボタンを押下すると、下の画面へ遷移するようにsegueを配置した

しかし、この方法では、「下から上へ画面が出てくる」方式の遷移しかできない

 

他のサイトに「show」は右から出てくる、みたいに書いてあって、なんども思考錯誤したけど、うまくいかなかった

するとどうも、「Navigation Controller」というものが挟まっていないことが原因だとわかってきた

 

だので、ナビゲーションコントロールを開始したいSceneの一番上のViewを選択し、メニューから[Editor]→[Embed In]→[Navigation Controller]と選択してやる

f:id:mob-wasao:20170315114723j:plain

すると以下のように「Navigation Controller」が挟まってくる

f:id:mob-wasao:20170315114845j:plain

そうすると、ようやく「右から左への画面遷移」ができるようになった

なんというか、大前提として、Navigation Controllerが必要だったようだ

CoreDataを使う際にいきなりエラー

CoreDataというiOSのO/Rマッパ(かな?)を使用する際、いきなりエラーが出てたじろいだ

 

手順はこんな感じ

まずはDataModelというのを追加

f:id:mob-wasao:20170313142901j:plain

つぎにEntity(エンティティ)を追加

エンティティというのは、テーブルとカラムの対応づけ、みたいなものです(雑な説明で恐縮ですが)

f:id:mob-wasao:20170313143120j:plain

んで、これを実際にソース(swift)に変換する

f:id:mob-wasao:20170313143253j:plain

実際にできたファイルはこんな感じ

f:id:mob-wasao:20170313143728j:plain

いきなりエラーでますやん

ツールで作ってんのにいきなりエラーってなに?

Invalid redeclaration of 'Entity' とか
'Entity7 is ambigous for type lookup in this context とか

 

解決法

f:id:mob-wasao:20170313144133j:plain

画面右端の「Codegem」を「Manual/None」にすればよいようだ・・・

詳細は後日調べる

UIButtonで余白があるのに文字が全部表示されない件

UIButtonにタイトルを指定している際、幅は十分あるにもかかわらず

文字が全部表示しきれなかった

 

初期画面はこちら

f:id:mob-wasao:20170310151628p:plain

 

次の画面で選択した文字列に置き直した結果がこちら

f:id:mob-wasao:20170310151726p:plain

 

省略されてますよね?

省略される位置の問題でなく、表示する努力を怠った感じで省略されてますよねw

 

以下の方法で暫定解決としました

f:id:mob-wasao:20170310151906p:plain

 

最初に長い文字列を設定しておくと、十分なサイズが確保される模様

(たぶん、本来的には中に入っているUILabelをごにょごにょするんだろうけど)

 

segueによる画面間データの受け渡し(失敗例)

親画面に表示する内容を子画面で選択。その後、親画面でそれを表示したい

子画面にはTableViewがあり、テーブルを選択した際にUnwindActionが走る

失敗例:

子画面側ソース

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        let viewConroller = segue.destination as! SearchViewController
        
        switch segueName {
        case "selectDestination":
            viewConroller.destinationButton.titleLabel?.text = selectedItem
        case "selectDeparture":
            viewConroller.departureButton.titleLabel?.text = selectedItem
        default: break
        }
    }


のように、親画面をいじってやるつもりだったが、なぜか空文字になっていた

それは、TableViewの選択時イベント

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        selectedItem = list[indexPath.row]
    }

が後に走るため、登録する文字が空文字になっていた為

なんでやねん

さっそく

これはここ(はてなブログ)の話

ユーザー登録の際、メアドにメール来ない

イコン画像が反映されない

→画像を小さくしたら反映できましたが

 

はてな、いい加減な会社のイメージ

悪印象スタート

悪いことは最初だけならいいなぁ