月別アーカイブ: 2019年2月

MacBook Pro 2016 late 13インチ TouchBarモデルをバッテリー修理に出したらキーボードが変わった件。

MacBook Pro 2016 late 13インチ TouchBar搭載 買いました。(*´ω`*) | iPhoneアプリ備忘録

MacBook Pro 2016 late 13インチ TouchBarモデルを発売直後に買って以来メイン機とて使っています。
それを最近修理に出しました。

最初に気がついたのは2018年の12月の中頃。
普段は自営業の職場においてあるMacBookProを持って帰ろうと閉じた時、蓋?ディスプレイ?が閉まりきっていないことに気がついた。
軽く抑えても反発して閉じきらない。買ったばかりの頃はピタッと閉まって綺麗と思ったはずなのにそれが大きく隙間が空いている。
えっ?とおもってよく見てみると、キーボードが盛り上がってる。orz
どうもバッテリーが膨張しているようです。
後日撮影写真↓
MacBook Pro 2016 late 13インチ TouchBarモデルをバッテリー修理に出したらキーボードが変わった件。
MacBook Pro 2016 late 13インチ TouchBarモデルをバッテリー修理に出したらキーボードが変わった件。

しばらく電源を落として冷えてくると膨張が収まって来るようですが、やはり一日使っていると膨らんでくるようです。
普通に使用する分には特に問題ないですが、やはり爆発とかその他の不具合とか出ると困ります。

すぐにいろいろと調べてみると、バッテリー交換はなかなかお高いようです。
Mac 修理 – Apple サポート 公式サイト
↑こちらによると 13 インチ/15 インチ MacBook Pro Retina ディスプレイモデル 19,800 円
だそうです。/(^o^)\
残念ながらちょうど2年の保証が切れている…。

そーは言っても修理しないわけには行かずアップル正規サービスプロバイダのカメラのキタムラに予約していってきました。
キタムラで見てもらうと、普段はMacBookにカバーを付けて使っているので気づきませんでしたが、外してみると、本体の下部が膨らんでガタつく程になってました。
後日撮影動画↓

キタムラに持っていったのは12月の下旬で、ちょうどiPhoneのバッテリー交換プログラムの終了が近く混んでおり、また年末も押し迫っていたため年末年始にかかると修理に出しても何日かかるかわからないという事で一旦引き上げてきました。

ここで嬉しい情報を1つゲット。\(^o^)/
バッテリの膨張は保証対象期間が3年なんだそうです。\(^o^)/
購入から3年以内で問題が外部損傷や水が掛かった等の外的要因によらず、バッテリーの膨張だけと判明した場合は無償で交換対象になるそうです。\(^o^)/

年が明けて2019年2月上旬。
なんだかんだで一月以上間が空いてしまいましたが、改めてキタムラに修理に持っていきました。
その間に新たにMacの不具合が見つかったのですが、それについてはまた後日書くかもしれないです。

で、持っていったのが2月6日水曜日の午後。
普段からTimeMachineでバックアップを取っていますが一応確認をしてから持ち込み、不具合の確認、万一の場合はデータが消えてしまうこと等も了承して修理に出しました。

それから四日後の2月10日の日曜日、昼過ぎにキタムラから電話があり、修理ができたとのことで、その日の最終7時に予約をして受け取りに行きました。
バッテリー以外には問題がなかったようで無事無償で修理されて帰ってきました。\(^o^)/
MacBook Pro 2016 late 13インチ TouchBarモデルをバッテリー修理に出したらキーボードが変わった件。

このMacBookのバッテリーは本体キーボード側のトップケース?と一体型となっていて本体の上側を全交換していると言うような説明があったのは覚えています。
もともと大事に使っていたので傷もなかったのですが、新しくなったと聞いて嬉しく使っていましたが、最初に違和感を覚えたのはタブキーでした。
タブキーを打つ時、「あれ?タブキーってtabって書いてあったよな?」と思ったのですが、tabキーであるはずのキーには「→|」というような記号があるだけでした。

しばらくは確認するのもめんどくさく、特に不都合もないのでそのまま使っていたのですが、昨日改めてよく見るとshiftの文字もないですし、deleteも、Capsの文字もありませんでした。

改めて買った時の写真と↓
MacBook Pro 2016 late 13インチ TouchBarモデルをバッテリー修理に出したらキーボードが変わった件。
今のキーボードを比べてみると↓
MacBook Pro 2016 late 13インチ TouchBarモデルをバッテリー修理に出したらキーボードが変わった件。
明らかに変わっています。\(^o^)/

修飾キーが名称ではなくメニューバーのショートカット等で使われる記号に変わっていました。
MacBook Pro 2017モデルではキーボードが改良され、2016モデルで発生していたキー音の問題などが修正されているもよう。 | AAPL Ch.
↑こちらのサイトによると、MacBookPro2017モデルでちょっとキーボードが変わったようですね。

ってことは修理されて戻ってきたMacBookのキーボード含めトップケース部分は2017モデルの様ですね。\(^o^)/
しかし、「shift」とか「tab」とか「enter」とか書いてないと慣れてない人は困るんじゃないのか?と思わんでもないですね。(^_^;)

ところで、この記事を書くに辺調べてみると逆のパターンの方もおられました。
MacBook Proのキーボードを修理に出したらバッテリーも新品になった件 (2018/6/23 追記) – yamaken.jp
こちらの方はキーボードの不具合を直したらバッテリーも新品になったようです。

Apple的にはユーザーや修理屋に内部をいじられたくない?様で、MacBookのバッテリーやメモリ、SSDなども直付けが多くなっているようです。
その分Apple的にもユーザー的にも修理にかかるコストが増えてる気がするんですがどーなんですかね。

とゆーことで、バッテリーを直したらキーボードも変わっててびっくりしたという話でした。\(^o^)/

【Swift4】JSONDecoderでただの配列を読む。

JSON使ってみます。
ただ、どこみても、ディクショナリ型やディクショナリ型の配列の入れ子とか、そんなんばっかりでただの配列にするんで考えました。
まあ、需要なさそうだけど…。

とりあえず、Playgroundで試します。

まずはjsonファイルを用意してファイルパスから。
参考サイト
Playgroundでリソース(plist、xml等々)にアクセスする – Qiita

Resourcesフォルダをつくり、中に配列の入ったjsonファイルを作る。
【Swift4】JSONDecoderでただの配列を読む。

それをString型の配列に落とし込みます。
Codableは使いません。

参考サイト
[Swift] JSON文字列から任意のオブジェクトへ変換する(JSONDecoderとCodableの利用) – YoheiM .NET

こんな感じのコードで。

こんな感じになります。
【Swift4】JSONDecoderでただの配列を読む。

【Swift4】UITableViewCellにUISwitchをつけたがフリーズして困った件。

ちょっと前に、UITableViewCellにUISwitchを乗せるのをやったのですが、↓

【Swift4】UITableViewCellにUISwitchをつけたがindexPath.rowを受け取るのが大変だった件。 | iPhoneアプリ備忘録

その後いじってるとスイッチを動かしたあとぐぐっと動いてフリーズしてしまいました。
エラーなどは出ずほんとにフリーズしてしまうのです。

いろいろと動かしてみた結果、スイッチを動かした後すぐにuserDefaultsでデータを保存しようとするとフリーズしてしまうようでした。
初めに別メソッドにしてディスパッチで保存を隔離してみたのですが、駄目でした。

なんか一時的にうまく行ったのですが、やはり時々フリーズすることが有り使えませんでした。
んでいろいろと検索してみると似たような症例がいくつか…。

参考サイト
ios – テーブルビューリロードセクションがクラッシュする
iOS8のUITableViewの自爆機能について(笑)

どうもUITableViewを使っていてUITableViewCell.accessoryViewプロパティにUISwitch等のUIView関連を設定していてセクションを更新しようとするとおかしくなるらしいです。
まあ良くは理解してませんが。
スイッチがアニメーションしているときに更新等が入ると止まっちゃうようです。

なのでアニメーションが終わってから処理をしたら大丈夫かなと想像しているとこちらで解法が載っていました。

参考サイト
reloadData処理後に処理を行いたい – Qiita

参考サイトからの転載

んで、自分がしたかったのは保存なので、

こんな感じになりました。

【Swift4】UserDefaultsとNSMutableArray

難しいことはわからないのですがUserDefaultsでNSMutableArrayを取り出すのが難しいらしいです。
詳しくはこちら参照。

きみが思い出になる前に – NSUserDefaultsに保存したmutableなオブジェクトはmutableCopyを使って作り直す
swift NSUserDefault で NSMutableArray が使えなくなった! – tomo358技術ブログ
NSMutableArrayをNSUserDefaultsで保存する | イリテク

なんか、冗長な感じになります。
Playgroundで書いてみた。

mutableArray = (defaults.object(forKey: “muArray”)as AnyObject).mutableCopy() as! NSMutableArray

ここの部分、なんか冗長ですよね〜。
で海外のstack overflow見てたらスマートに書かれてました。
参考サイト
ios – Ambiguous use of ‘mutableCopy()’ Swift3 – Stack Overflow

参考にすると、

mutableArray = defaults.mutableArrayValue(forKey: “muArray”)

ここが重要↑こんな感じ。
よくわからんけどスマートですよね。
よかったよかった。
うじゃうじゃ。