まだどこにもないアプリを作る

アプリ開発でつまづいたところなどを中心に記事にして行きます。

【Swift エラー】'GoogleUtilities/GULURLSessionDataResponse.h' file not foundの回避方法一例

プロジェクトに入っているFirebase Admob関連のライブラリが原因です

プロジェクトに入っているFirebase Adomb関連のPodを全て一回削除します。

削除するには

Podfileの文をコメントアウトするだけです。

 

#pod 'Firebase/Analytics'

#pod 'Firebase/Crashlytics'

#pod 'Firebase/AdMob'

など

#でコメントアウトです

このように灰色にしてください 

 

それでコマンドラインでpod updateをします

 

それでビルドが成功するか確認してみましょう

成功したら

 

pod 'Firebase/Analytics'

pod 'Firebase/AdMob'

 

でpod updateをもう一回します。

 

そうすると治っていました。

 

一例なので確証はありません

 

頑張っていきましょう

 

Privacy Policy : 頻出単語カウンター

プライバシーポリシー(個人情報保護方針)

デベロッパー名: Ryusuke Uchida(以下、当運営者)および
     「頻出単語カウンター」(以下、当アプリ)は、利用者からいくつかの個人データを収集します。
当運営者は本人の権利の保護、個人情報に関する法規制等を遵守します。

・当アプリが使用しているアプリケーション解析ツールについて
当アプリでは解析ツール「Google Firebase」を利用しアプリケーションの操作データ及びCookie(クッキー)を収集しています。

トラフィックデータは匿名で収集されており、個人を特定するものではありません。
詳細については「データの保護 - アナリティクス ヘルプ」をご覧ください。

・当アプリに掲載されている広告について
当アプリは第三者配信の広告サービス「Google Admob」を利用しています。
広告配信事業者は、ユーザーの興味に応じた広告を表示するために当アプリの操作データを使用することがあります。
Google Admobに関する詳細は「AdMob および AdSense ポリシー - AdMob ヘルプ」をご覧ください。

・個人情報の管理と利用目的
当運営者は、上記のツール以外で個人を特定すること、そのデータを保持することは行いません。
当アプリ及び当運営者が提供するサービスの改善を行うために、解析ツールを導入しております。

・個人情報の第三者への開示・提供の禁止
当運営者は、ユーザーよりお預かりした個人情報を適切に管理し、次のいずれかに該当する場合を除き、第三者に開示いたしません。
 ・ ユーザーの同意がある場合
 ・ ユーザーが希望されるサービスを行なうために当社運営者が業務を委託する業者に対して開示する場合
 ・ 法令に基づき開示することが必要である場合

・個人情報の安全対策
当運営者は、個人情報の正確性及び安全性確保のために、セキュリティに万全の対策を講じています。

・ご本人の照会
ユーザーがご本人の個人情報の照会・修正・削除などをご希望される場合には、ご本人であることを確認の上、対応させていただきます。

・法令、規範の遵守と見直し
当運営者は、保有する個人情報に関して適用される日本の法令、その他規範を遵守するとともに、本ポリシーの内容を適宜見直し、その改善に努めます。
この方針は、事業内容の変更、法令の改正等により、事前に公表することなく任意の時期に変更される場合があります。

・お問い合わせ
個人情報保護方針に関するお問合せにつきましては、下記で受け付けております。

メールアドレス:appkaihatsu_r@yahoo.co.jp
最終更新 2021年7月6日

【swift】 配列から空の要素""を削除

swift配列から空の要素""を削除します。

削除するというよりフィルターをかけています。

下記の配列は

1番目-空

2番目-a

3番目-空白

4番目-タブ

になってます。

var arr: [String] = ["","a"," ","   "]

arr = arr.filter { !$0.isEmpty }//空の要素を削除

print(arr)

 

結果

["a", " ", "   "]

 

 

#Swift配列なにも入ってない要素を削除

 

 

【Swift】特定の文字を削除する方法

【Swift】特定の文字を削除する方法

なぜかいい感じに特定の文字を指定して削除するメソッドが見つからなかったので代わりに置換メソッドを使いましょう。

var str2 = "coffee"

str2 = str2.replacingOccurrences(of: "f", with: "")

 

print(str2)

出力結果 --- coee

 

#Swift特定の文字列を削除

#Swift文字を検索して削除

#Swift文字を置換

 

 

【Swift】iOS13からのSystemIcon SFSymbolの太さをコードで変更する方法(UIKit)

こちらのサイト様を全面的に参考にさせていただきました。

How to use system icons in your app - free Swift 5.4 example code and tips

 

SymbolConfiguration(weight:で変えることができます。

//SFSymbolの太さを指定

let boldConfig = UIImage.SymbolConfiguration(weight: .thin)

//SFSymbolをUIImageにする

let icon = UIImage(systemName: "square.and.arrow.up", withConfiguration: boldConfig)

 

 

太さを変えるとこんな感じで見た目がかわります。

結構印象変わりますよね。

.thin↓

f:id:rils_k:20210630123106p:plain

.regular↓

f:id:rils_k:20210630123109p:plain

 

 

太さの段階のバリエーションも豊富!

ウルトラライトが一番細くて下にいくほど太くなります。

f:id:rils_k:20210630123113p:plain

 

【Swift】BarButtonItemにシステムアイコンを指定する。UIBarButtonSystemItem

意外と手こずりました。

UIBarButttonItemとUIBarButtonSystemItemは違うようです。

 

↓がUIBarButtonSystemItemをナヴィゲーションアイテムの右端のボタンに配置するやり方です。

//左上のバーボタンをシェアボタンに

let myLeftButton = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: .none) navigationItem.rightBarButtonItem = myLeftButton

       

 

↓こちらがiOS13以降に対応しているシステムアイコンをBarButtonItemにするやり方。

let myLeftButton2 = UIBarButtonItem(image: UIImage(systemName: "square.and.arrow.up"), style: .done, target: self, action: .none)

navigationItem.rightBarButtonItem = myLeftButton2

 

ボタンを押したときのアクションを実装したい場合はaction:のところをこうして

let myLeftButton2 = UIBarButtonItem(image: UIImage(systemName: "arrow.down.square"), style: .done, target: self, action: #selector(rightTopBarBA))

navigationItem.rightBarButtonItem = myLeftButton2

押されたときの関数を追加しましょう

@objc func rightTopBarBA(){

     print("右上のバーボタン")

    }

 

こちらのサイト様を参考にさせていただきました。

017 UIBarButtonItemの設置 - Swift Docs

 

 

#UIBarButtonSystemItemAction

#UINavigationController

【Swift】フォトライブラリに何らかの変更があったときに検知する方法

Photosフレームワークをインポート

import Photos

まずPHPhotoLibraryChangeObserverを追加(継承)

class ViewController: UIViewController,PHPhotoLibraryChangeObserver{

 

エラーの赤丸を押せば勝手に出てくる

func photoLibraryDidChange(_ changeInstance: PHChange) {

        print("フォトライブラリに何らかの変更がありました")

    }

を追加。フォトライブラリに変更があったらこのブロックの中がよばれる

 

ViewDidLoad{}内でオブザーバーを登録

PHPhotoLibrary.shared().register(self)

 

一応deinitしたときにオブザーバを破棄するようにしておく

deinit {

        PHPhotoLibrary.shared().unregisterChangeObserver(self)

    }