iOS関連のことを調べてみた2019年11月07日

iOS関連のことを調べてみた2019年11月07日

【意外と知らない】iOSアプリでのビルドコード

![スクリーンショット 2019-11-07 11.31.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49481/777478e0-0837-580c-c106-f36cd67e3f91.png)

意外と知らない人多いと思うのですが
***iTunes Connect***に送信するアプリ(iOS等)のビルドコードですが
バージョンコードが変われば同じものを使用してもいいんです。

Androidだとだめなはずなので勘違いしている人多いかもしれないですね。

元記事を表示

Combineフレームワーク リンク集

# はじめに

Combineフレームワーク についてのリンクをまとめてみました。
特にサンプルコードを見てみるのは、Combineフレームワークの概要を掴むのにとても有効です。

#【Apple公式】
## Apple Documentation

**Combine**
https://developer.apple.com/documentation/combine

**Receiving and Handling Events with Combine**
https://developer.apple.com/documentation/combine/receiving_and_handling_events_with_combine

## WWDC2109
**Introducing Combine**
https://developer.apple.com/videos/play/wwdc2019/722
>Combine is a unified declarative framework for processing values over time. Lear

元記事を表示

macOS Catalinaで fastlaneが動作しなくなった件 & 解決方法

macOS Catalinaにアップデート後、fastlaneを実行すると、このようなエラーになる。

“`
% fastlane
zsh: /usr/local/bin/fastlane: bad interpreter: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: no such file or directory
“`

CatalinaからRubyのバージョンが変わったそうなのだが、その関連でエラーが出ているとおもわれます。

自分はこの辺の設定に詳しくなく、解決にかなり時間を費やしました:frowning2:。もし、同様の件でお困りの方がいれば参考になると思い、解決方法を書き残して置きます。

## エラー解消のために行ったこと

### gem update

gemを更新する。

“`
% sudo gem update –system
“`

### install fastlane(失敗)

fastlaneを更新する。

“`
% sudo gem inst

元記事を表示

Buttonのタイトル変更について

## Buttonのタイトルが変更できない、、、
Labelと同じだと思い

“`swift:changeButtonTitle
ボタン名.currentTitle = “変更したいタイトル名”
“`

とすると、エラーが表示されてしまいました。

## 変更方法

以下のコードで変更できました↓

“`swift:changeButtonTitle
ボタン名.setTitle(“変更したいタイトル名”, for: .normal)
“`

##### 参考サイト
– https://stackoverflow.com/questions/26326296/changing-text-of-uibutton-programmatically-swift

元記事を表示

Swiftで予約語を変数名やCase名として使う

Swiftで変数名やenumのcase名を命名しようとして使った単語が、予約語であったため使えなかったという事態に遭遇したことがある人は多いと思う。

“`UserStatus.swift
enum UserStatus {

// Error: private’ modifier cannot be applied to this declaration
case private
case open
}
“`

“`Vars.swift
// selfという命名のString型の変数は作れない
let self = “Ham Spam”
“`

今回はその回避方法と、回避方法を使う際の注意点を解説する。

## 予約語を使う

Swiftの予約語として使われている単語は“でその変数名やenumのcaseを囲むことで使うことができる。

“`Enum.swift
enum Status {
case `public`
case `private`
}

let status1 = Status.private
let s

元記事を表示

Firebase AuthenticationでTwitterのOAuthを利用し、Twitter APIにリクエストする

[2018年5月にTwitterKitのサポートが終了](https://blog.twitter.com/developer/ja_jp/topics/community/2018/TKSDK_tr.html)し、Firebase Authenticationでも[OAuthを利用したTwitterログイン](https://firebase.google.com/docs/auth/ios/twitter-login?hl=ja)が推奨されるようになりました。
設定まわりに関してはすでにいくつか記事があるので、主にiOS/Swiftでの実装部分について書きたいと思います。

というわけでさっそく作っていきましょう?‍??

## 環境
* iOS 12.1〜
* Swift 5
* FirebaseAuth
* [OAuthSwift](https://github.com/OAuthSwift)
* [KeychainAccess](https://github.com/kishikawakatsumi/KeychainAccess)

## TwitterのDeveloperア

元記事を表示

iOS10のサポートを切るときにやったこと

先日、自社アプリのサポートOSを10.0 -> 11.0に変更する対応をしました。
実装するうえで参考になる記事が少なく、手探りでやっていったので、そのときの手順・ハマった点などをメモしておきます:pencil:

# iOS10を切ることにした経緯
もともとチーム内に「管理面や新しい機能を取り入れていくことなどを考えると、古いバージョンを切りたいね」という話がありました。
さくっと調べてみたところ、2019年8月末時点で色々なアプリがiOS10を切り始めていることがわかりました。

元記事を表示

RxSwift + SPM + XCode11.2 + iOS 環境でビルドすると実行時にクラッシュする

##多分期間限定で掲載する投稿になります

表題の通りの内容です。XCode11からSwift Package Managerが統合されたので、Carthageから乗り換えていたのですが、先日リリースされたXCode11.2 で地雷を踏みました。

私の環境 : Xcode 11.2 final, Catalina 10.15.1, iOS 13.2

https://bugs.swift.org/browse/SR-11564?focusedCommentId=51285&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-51285

SPMに関連する処理の部分で、linkerがmoduleを最適化するところにバグがあるみたいです。
ですので、RxSwift以外でもSPMをつかってると広く影響があるようですね。

一応回避策として、DEAD_CODE_STRIPPING = NO とオプションをつければいける様なのですが、私はひとまず、Xcode 11.1 を入れ直して対応し

元記事を表示

Firebase Cloud MessagingをiOSアプリで利用したときのメモ

– Apple Push Notification Authentication Keyを用意する
– アプリIDの作成
– プロビジョニング プロファイルを作成

https://firebase.google.com/docs/cloud-messaging/ios/certs?hl=ja

– FirebaseプロジェクトにiOSアプリを追加
– Apple Push Notification Authentication KeyをFirebaseプロジェクトのiOSアプリにアップロード
– Firebase 構成ファイル(GoogleService-Info.plist)をDLしてiOSプロジェクトに追加
– iOSプロジェクトにFirebaseSDKを追加(CocoaPods)
– https://github.com/firebase/quickstart-ios/blob/15a45e32607dceb3264da28879a48d7890b7dd0c/messaging/MessagingExampleSwift/AppDelegate.swift を参考に

元記事を表示

XcodeでDistribution時にentitlementsエラー

# Distribution時にentitlementsエラーが発生

XcodeのOrganizerでアーカイブを `Distribute App` しようとしたら、entitlementsに関するエラーが発生しました。ちょっとハマってしまったので、解決(?)方法について共有します。

## 前提

“`
❯ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15
BuildVersion: 19A583

❯ xcodebuild -version
Xcode 10.1
Build version 10B61
“`

## エラーの内容

作成したアーカイブを選択して `Distribute App` をクリックすると、signingオプションの選択を求められます。

![スクリーンショット 2019-11-05 18.26.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27943/def0551a-7331-e926-d959-6c95

元記事を表示

画面遷移から戻るときに親ビューの画面を更新する方法

##目的
親ビューからモーダル遷移した子ビューで操作を行い、その結果に応じて親ビューの内容を更新させるという処理を行いたかったのですが、Delegateを使う以外に簡単な方法がありましたので書くことにしました!(Delegateまだ理解してない…笑)

実際には、
・親ビューにCollectionViewがある
・モーダル遷移した子ビューでCollectionViewに表示する情報を追加する
子ビューから親ビューに戻った時にCollectionViewのinsertItems()やアニメーションなどを含めたメソッドを実行したかった

やり方を調べているとDelegateを使って処理を委譲するという方法を多くみましたが、このくらいの簡単な処理であれば**CallBack**という方法が簡単だということを知ったので紹介します!

##使うViewController
親:ViewControllr
(ボタンを押すと子ビューにモーダル遷移する)
子:ChildViewController
(ボタンを押すとdismissして子ビューから渡す値で親ビューの関数を実行する)
(今回は子ビューか

元記事を表示

SwiftUIでプレビューがUnknown preview provider “ContentView_Previews”エラーとなる

小ネタですがハマってしまったので誰かの参考になれば。

## 環境
– macOS Catalina 10.15.1
– Xcode 11.2 (11B52)
– iOS 13.2

## 現象

ビルドは通りますし、実行したら実機で動きますが、
プレビューがエラーで表示されません。

![ 2019-11-06 10.09.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190739/3b367653-b0db-6800-a576-b54752d59aab.png)

## 原因

Display Nameが日本語なのが原因でした。
英数字のみにしたら直りました。

![ 2019-11-06 10.13.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190739/f8696525-f5ba-6a32-f40a-0ef3d8ed543a.png)

## 回避策

そうは言ってもアプリ名は好きに付けたいです

元記事を表示

SwiftUIとCoreDataを@FetchRequestで連携させる

データベースのデータをSwiftUIに表示したい場合、
データベースがCoreDataであれば、
`@FetchRequest` と `FetchedResults` を使うことによって連携することができます。

# FetchRequest

[FetchRequestのドキュメント](https://developer.apple.com/documentation/swiftui/fetchrequest)

FetchRequestのパラメータには `sortDescriptors` や `predicate` などが用意されていて、
`@FetchRequest` をFetchedResultsプロパティにつけることによってCoreData内のデータを取り出せます。
例えば、EntityというデータモデルをcreateAt順で取り出したい場合は以下のコードの感じでプロパティを用意します。

“`swift
@FetchRequest(entity: Entity.entity(), sortDescriptors: [NSSortDescriptor(keyPath

元記事を表示

URLからQRコードを生成する

#手順
これをコピペ

“`swift
extension String {

func generateQR() -> UIImage? {
guard let data = self.data(using: .utf8) else { return nil }
guard let qr = CIFilter(name: “CIQRCodeGenerator”, parameters: [“inputMessage”: data, “inputCorrectionLevel”: “M”]) else { return nil }
let sizeTransform = CGAffineTransform(scaleX: 10, y: 10)
guard let qrImage = qr.outputImage?.transformed(by: sizeTransform) else { return nil }
return UIImage(ciImage: qrImage)
}
}
`

元記事を表示

Unity Cloud BuildでFirebaseを使ったiOSアプリをビルドする

Unity Cloud BuildではCocoapodが使えません。
なのでCocoapodを使わずにFirebaseの機能をiOSで使う方法を紹介します。
##使えた機能
* Analytics
* Realtime Database
* Authentication
* Cloud Messaging
* Dynamic Links 

##UnityにFirebaseを実装する
###FirebaseのSDKを入れる
まず [ここ](https://firebase.google.com/download/unity?authuser=0 “Unity Firebase SDK”) からFirebaseのUnity用のSDKをダウンロードします。
次にダウンロードしたSDKをUnityにインポートします。
[Assets]>[Import Package]>[Custom Package…]
![2019-11-05 (3)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357553/d

元記事を表示

Xcode11.2でStoryboardのUITextViewがcrashする

# エラー内容
“`
*** Terminating app due to uncaught exception ‘NSInvalidUnarchiveOperationException’, reason: ‘Could not instantiate class named _UITextLayoutView because no class named _UITextLayoutView was found; the class needs to be defined in source code or linked in from a library (ensure the class is part of the correct target)’
“`

# 発生条件
– Xcodeのバージョンは11.2
– StoryboardのUITextViewを使っている
– 実機端末のosバージョンが13.2以下

# 解決方法
## Xcodeをダウングレードする
11.2以外のバージョンを使う

## simulatorで検証する
この問題は実機だけで発生する

## `_

元記事を表示

Flutterウィークリー #82

# Flutterウィークリーとは?
FlutterファンによるFlutterファンのためのニュースレター
https://flutterweekly.net/

この記事は#82の日本語訳です
https://mailchi.mp/flutterweekly/flutter-weekly-82

※Google翻訳を使って自動翻訳を行っています。翻訳に問題がある箇所を発見しましたら編集リクエストを送っていただければ幸いです。

# アナウンス

### Flutter Interact –日付を保存します
https://events.google.com/flutter-interact/


Flutterチームによる新しいイベント。今回はニューヨークで開催され、全世界に向けて生放送されます。

# 読み物&チュートリアル

### Over the Rainbow –カラーフィルター
https:/

元記事を表示

Go言語でiOS開発ツールを作成する:Localizable.stringsファイルからenumを生成する

# はじめに
 `Go言語でiOS開発ツールを作成する` というモチベーションは、まずGo言語が自分にとってとても興味深い言語であるいうところから始まっています。もともとLinux上でC言語を使って組込製品などを作ってきた人間にとっては、Go言語はすごく分かりやすくて便利な言語だという感触がありました。しかも高速(らしい)です。
 実は以前にSwiftでMacで動くiOS開発ツールは作った経験があるのですが、今回Go言語でチャレンジした感想は、Swiftに比べてもGo言語はとても優れているということです。(特にMacOSやLinuxで動くツールを作成する場合)

# 目標

“`:Localizable.strings

“clode_window” = “閉じる”;
“delete something” = “削除する”;
“cancel” = “キャンセル”;
“OK” = “OK”;
“_Only_this_” = “Only this”;
“`

例えば上記のような `Localizable.strings` から下記のようなswiftファイルを生成します。

“`swi

元記事を表示

追記:修正11.2.1GM配信中【緊急周知】Xcode 11.2 使用注意!(Kozeさんブログより)

**追記:2019年 11月 6日 現在、この問題が修正された Xcode 11.2.1 GM が 開発者向けサイトからダウンロード可能です。**

https://developer.apple.com/documentation/xcode_release_notes/xcode_11_2_1_gm_seed_release_notes/

・実際にインストールして試してみて iOS では問題点が修正されているのを確認しました。

・ただし、11.2 or 11.2.1 + macOS 10.15.1 の組み合わせで macOS 用アプリを作成した場合、そのアプリを macOS 10.15.1 より古いバージョン(最新バージョンよりまえのバージョン)で動かそうとするとクラッシュする不具合が残っているようなので、macOS 用アプリ開発をする場合はさらに次のバージョンの Xcode を待つ必要がありそうです。
(手元に macOS 10.15.1 よりまえの環境がないため、動作は未検証)

問題点が修正された Xcode が正式公開された後この記事は削除します。
 

元記事を表示

AutoLayout、バッティングが起きたとき、プライオリティは低いがバッティングの原因ではないものはどう扱われるのか

今回もAutoLayoutです。

A,B,C,D,Eの5つの荷物が入ったかばんを金属探知機にかけたら警報が鳴った。
Aを取り出してから再度かばんを検査するとまた警報が鳴った。
次にBを取り出して検査するとまた警報が鳴った。
さらにCを取り出して検査すると今度は警報が鳴らなかった。

あなたが次にするべきことは次のうちどちらか。

– かばんの中身はDとEで決定する
– AとBを順番にかばんに入れて検査し、警報が鳴らないならかばんに入れておくことを決定する(要するにAとBについて調べる)

これは私がAutoLayoutで感じた疑問である。

#AutoLayoutこの先生きのこる問題

AutoLayoutの3つの制約A,B,Cがある。
プライオリティはA>B>C。
ある状況でAとBはバッティングしてAとCはバッティングしなかった。
Bを排除することは決定だが、AとバッティングしないCはどうなるのか。

#結論
Cは排除される。

#検証コード

“`
import UIKit

class ViewController: UIViewController {

let vie

元記事を表示

OTHERカテゴリの最新記事