「swift」カテゴリーアーカイブ

【swift】ライブラリEZAudioを使って音声ファイルの波形を表示してみる

こんにちは。しばらくライブラリを勉強していたのですが、一番やりたかったのがこれです。音声ファイルの波形を表示してみるということ。早速やっていきます。

 

CocoaPodのバージョンを確認

$ pod --version
1.2.1

新規プロジェクト「DemoEZAudio」という名前で適当に作成したらターミナルから、

pod init

して、Podfileを以下のように編集します。

Podfileを編集します

# Uncomment the next line to define a global platform for your project
# platform :ios, '8.0'

target 'DemoEzAudio' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for DemoEzAudio
  pod 'EZAudio', '~> 1.0'

end

そしてターミナルから

pod install

します。

ブリッジングヘッダーを追加

ブリッジングヘッダーを追加します。

ブリッジングヘッダーは、SwiftからObjective-Cのライブラリを利用可能にする橋渡しをしてくれるヘッダーファイルです。
メニューバーから[File]→[New]→[File…]を選択して、「Objective-C File]を選択し、[Next]ボタンを押下します。

https://github.com/syedhali/EZAudio/issues/267

何度か試してみましたが、どうもPodfileに
pod ‘EZAudio’, ‘~> 1.0’
と書かないと駄目なようです。
pod ‘EZAudio’だけでは駄目です。

Podfileは以下のように修正します。

platform :ios, '8.0'

target 'DemoEZAudio' do
pod 'EZAudio', '~> 1.0'
end

ブリッジングヘッダーはこんな感じが正解のようです。

//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#ifndef EZAudio_Swift_EZAudio_Swift_Bridging_Header_h
#define EZAudio_Swift_EZAudio_Swift_Bridging_Header_h

#import <EZAudio.h>

#endif
//
//  ViewController.swift
//  DemoEZAudio
//

// see:http://qiita.com/Ma-tsu-ne/items/ef5f5360c97219d99d6f
// see:http://cocoadocs.org/docsets/EZAudio/1.0.0/index.html

import UIKit

class ViewController: UIViewController ,EZAudioFileDelegate{

    var audioFile:EZAudioFile!
    var audioPlot:EZAudioPlot!
    var audioPlayer:EZAudioPlayer!
    var audioCoreGrph:EZAudioPlotGL!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        //波形
        self.audioPlot = EZAudioPlot(frame: self.view.frame)
        self.audioPlot.backgroundColor = UIColor.cyan
        self.audioPlot.color = UIColor.purple
        self.audioPlot.plotType = EZPlotType.buffer
        self.audioPlot.shouldFill = true
        self.audioPlot.shouldMirror = true
        self.audioPlot.shouldOptimizeForRealtimePlot = true

        //ファイルのパスを指定して読み込み
        self.openFileWithFilePathURL(filePathURL: NSURL(fileURLWithPath: Bundle.main.path(forResource: "Jump", ofType: "mp3")!))
        self.view.addSubview(self.audioPlot)
        
        //再生
        self.audioPlayer.pan = 0
        self.audioPlayer.volume = 50.0
        self.audioPlayer.play()
        
    
    }
    
    //ファイルの読み込みと波形の読み込み
    func openFileWithFilePathURL(filePathURL:NSURL){
        self.audioFile = EZAudioFile(url: filePathURL as URL!)
        self.audioFile.delegate = self
        
        let buffer = self.audioFile.getWaveformData().buffer(forChannel: 0)
        let bufferSize = self.audioFile.getWaveformData().bufferSize
        self.audioPlot.updateBuffer(buffer, withBufferSize: bufferSize)

        //読み込んだオーディオファイルをプレイヤーに設定して初期化
        self.audioPlayer = EZAudioPlayer(audioFile: self.audioFile)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

今回はVan Halenの名曲『Jump』の波形を表示してみます。とりあえず、ファイルをドラッグ&ドロップでプロジェクトに突っ込みます。

できましたー!

【swift】グラフが描ける外部ライブラリ「iOS-Charts」を試してみる

こんにちは。シンです。コードを書くときはいつもハワイアンかレゲェを聴いています。これを聴いているとすると南の島でノンビリとコーディングしている気持ちになりとってもハッピーになれるからです。

さて、今日はグラフが描ける外部ライブラリ「Charts」を試してみます。先日覚えた、「RealmSwift」と合わせて使えるようなので、これはかなり使えそうです。

githubを確認します

githubのURLはこちら。どんなグラフの種類が作成できるか確認できる画像もありますので、一読されると良いと思います。

https://github.com/danielgindi/Charts

さらに読み進めると、「Chart」+「RealmSwift」の導入まで丁寧に解説いただいているページのURLがありますので、ありがたく拝見します。ありがたや、ありがたや。ナムナム…。

https://medium.com/@skoli/using-realm-and-charts-with-swift-3-in-ios-10-40c42e3838c0

では、早速やっていきます。

まずはcocoapodで初期化を。

いつもの通り適当にXcodeでプロジェクトを適当に作ったあと、一旦プロジェクトを閉じてターミナルを開きます。そして、プロジェクトを作ったディレクトリに移動し、おもむろに

pod init

を打ちます。するとPodfileが作成されていますので、これをViなどで編集します。

お手本は

https://medium.com/@skoli/using-realm-and-charts-with-swift-3-in-ios-10-40c42e3838c0

に掲載されておりますので参考にします。

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'DemoChart' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for DemoChart
 pod 'Charts', :git => 'https://github.com/danielgindi/Charts.git',:branch =>'master'
 pod 'RealmSwift', '~> 2.0.2'

 post_install do |installer|
	installer.pods_project.targets.each do |target|
		target.build_configurations.each do |config|
			config.build_settings['SWIFT_VERSION'] = '3.0'
		end
	end
 end

end

編集が終わったら

pod install

実行結果はこんな感じです。

$ pod install
Analyzing dependencies
Pre-downloading: `Charts` from `https://github.com/danielgindi/Charts.git`, branch `master`
Downloading dependencies
Installing Charts (3.0.2)
Installing Realm (2.0.4)
Installing RealmSwift (2.0.4)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `DemoChartSwift.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There are 2 dependencies from the Podfile and 3 total pods installed.

[!] Automatically assigning platform ios with version 10.0 on target DemoChartSwift because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.

「Pod installation complete!」の文字を見つけたら、「DemoChartSwift.xcworkspace」を開きます。また、Pods > Products の配下にフレームワークが入っていることを確認します。

ここで、おおむね環境が整ったので、一旦ビルドして成功するかを確認します。ビルトが成功していたら次のステップへ。

StoryBoardでオブジェクトを配置します。

「Button」・「TextField」・「View」を配置します。

プログラムへ紐付け

「View」と「TextField」は

    @IBOutlet weak var tfValue: UITextField!

    @IBOutlet weak var barView: BarChartView!

に紐付けます。「Button」は

@IBAction func btnAddTapped(_ sender: AnyObject)

へ紐付けます。紐付けるときは「Control」キー+ドラッグ&ドロップで「ViewController.swift」へ落とします。※「Control」キー+ドラッグ&ドロップでできない場合は、右クリック(トラックパッドの場合は2本指でタップ)してドロップします。

※注意!

https://medium.com/@skoli/using-realm-and-charts-with-swift-3-in-ios-10-40c42e3838c0
では、プロパティー「barView」について、オブジェクトの紐付けが細かく解説されていませんが、
テキストフィールドと同じようにCtrl+ドラッグ&ドロップして、同じように紐付けしておきます。

内部処理のプログラムを書きます。

 

//
//  ViewController.swift
//  DemoChartSwift
//
//

import UIKit
//Charts、RealmSwiftを使えるようにインポート
import Charts
import RealmSwift


class ViewController: UIViewController {
    @IBOutlet weak var tfValue: UITextField!

    @IBOutlet weak var barView: BarChartView!
    
    /// ロードされた時に呼ばれます
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //チャートをアップデート
        updateChartWithData()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
    /// 「追加ボタン」タップ時
    ///
    /// - parameter sender: <#sender description#>
    @IBAction func btnAddTapped(_ sender: AnyObject) {
    
        if let value = tfValue.text , value != "" {
          
            //VisitorCoundインスタンスを作成
            let visitorCount = VisitorCount()

            //カウント値をテキストフィールドから取得して設定
            visitorCount.count = (NumberFormatter().number(from: value)?.intValue)!

            //保存
            visitorCount.save()

            //テキストフィールドを空にする
            tfValue.text = ""
            
        }
        //チャートをアップデート
        updateChartWithData()
    }
    
    
    /// チャート更新
    func updateChartWithData() {

        //データ配列を定義・・・(1)
        var dataEntries: [BarChartDataEntry] = []

        //データベースから取得
        let visitorCounts = getVisitorCountsFromDatabase()
        
        // 取得したデータを(1)のデータ配列に設定
        for i in 0..<visitorCounts.count {
            let dataEntry = BarChartDataEntry(x: Double(i), y: Double(visitorCounts[i].count))
            dataEntries.append(dataEntry)
        }
        
        // チャート情報にラベルとデータを設定
        let chartDataSet = BarChartDataSet(values: dataEntries, label: "訪問者数")
        let chartData = BarChartData(dataSet: chartDataSet)

        // viewにチャートデータを設定
        barView.data = chartData
    }
    
    /// データベース(RealmSwift)からVisitorCountsのデータを取得する
    ///
    /// - returns: <#return value description#>
    func getVisitorCountsFromDatabase() -> Results<VisitorCount> {
        do {
            let realm = try Realm()
            return realm.objects(VisitorCount.self)

        } catch let error as NSError {
            fatalError(error.localizedDescription)
        }
    }
}

//
//  VisitorCount.swift
//  DemoChartSwift
//

import Foundation
import RealmSwift

class VisitorCount : Object {
    
    dynamic var date : Date = Date()
    dynamic var count : Int = Int(0)
    
    func save() {
        do {
            let realm = try Realm()
            try realm.write {
                realm.add(self)
            }
        } catch let error as NSError {
            fatalError(error.localizedDescription)
        }
    }
}

 ビルドして、ビルドエラーがなければ動かします

ほらできた。THX!Sami Korpela!

念のため、Realmのデータベースの状態を確認

「find ./ -name default.realm -ls」を行って、今日更新されている「default.realm」ファイルを探します。そしてそのファイルをオープンします。

$ find ./ -name default.realm -ls
19470372        8 -rw-r--r--    1 hoge           staff                4096  4 30 07:34 .//Library/Developer/CoreSimulator/Devices/8D7F0311-0F41-4552-B185-E8CEE6C28758/data/Containers/Data/Application/0398E3D7-A1D7-41F8-B7D0-249A22EAC49F/Documents/default.realm
find: .//Library/Saved Application State/com.bitrock.appinstaller.savedState: Permission denied

$open .//Library/Developer/CoreSimulator/Devices/8D7F0311-0F41-4552-B185-E8CEE6C28758/data/Containers/Data/Application/0398E3D7-A1D7-41F8-B7D0-249A22EAC49F/Documents/default.realm

※フォーマットが古いというような警告が出ますが、アップデートしないと以下の画面へはたどりつけません。しかし、アップデートしてしまうと「Unsupported Realm file format version.」となり、エラーになってしまいますのでご注意を。この場合、該当のdefault.Realmファイルを削除してください。削除の方法はこちらの記事をこ覧ください。

ちゃんとデータベースにも登録されていますね。

今日はここまで。次回はグラフの種類を円グラフに変更したいと思います。

RealmSwift(レルム)で実装編

前回、プロジェクトのセットアップが終わったので、中身を実装します。

「Realm Browser」のインストール

とその前に、便利なツールをインストールしておきましょう。
Realm公式のツールです。データベースの中身を確認できます。
https://itunes.apple.com/jp/app/realm-browser/id1007457278?mt=12

データを挿入するプログラムの実装

まずは、テーブルレイアウトの元になるクラスを作成します。

//
//  Person.swift
//  DemoRealm
//

import Foundation
import RealmSwift

class Person: Object {
    dynamic var name = ""
    dynamic var age  = 0
    dynamic var sex  = ""
    dynamic var birthday = ""
    dynamic var genre = ""
}

次に「ViewController」

//
//  ViewController.swift
//  DemoRealm
//

import UIKit
import RealmSwift

class ViewController: UIViewController {
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let realm = try! Realm()
        
        let a_guitarist = Person()
        a_guitarist.name = "Paul Guilbert"
        a_guitarist.age  = 50
        a_guitarist.sex  = "MALE"
        a_guitarist.birthday = "1966-11-06"
        a_guitarist.genre = "HR/HM"
        
        try! realm.write() {
            realm.add(a_guitarist)
        }
    }

    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

コンパイルが通ったら、シミュレータで起動してみます。
一通り流れたら、realmのデータベースファイル「default.realm」が作成されているはずですので、ターミナルで探してみます。

ターミナルで以下のコマンドを打ちます。

find /Users/ -name default.realm -ls
19389704        8 -rw-r--r--    1 hoge           staff                4096  4 27 22:31 /Users//hoge/Library/Developer/CoreSimulator/Devices/8D7F0311-0F41-4552-B185-E8CEE6C28758/data/Containers/Data/Application/EAC6EBC8-94BC-4E01-9E0F-77CF3C37C711/Documents/default.realm
find: /Users//hoge/Library/Saved Application State/com.bitrock.appinstaller.savedState: Permission denied

※「Permission denied」のところはアクセス権限がないだけなので無視します。

/Users//hoge/Library/Developer/CoreSimulator/Devices/8D7F0311-0F41-4552-B185-E8CEE6C28758/data/Containers/Data/Application/EAC6EBC8-94BC-4E01-9E0F-77CF3C37C711/Documents/default.realm

にファイルができていることがわかったので、チェンジディレクトリしておきます。

cd /Users//hoge/Library/Developer/CoreSimulator/Devices/8D7F0311-0F41-4552-B185-E8CEE6C28758/data/Containers/Data/Application/EAC6EBC8-94BC-4E01-9E0F-77CF3C37C711/Documents/

そしてさらにターミナルで

open default.realm

と打ちます。

すると、「Realm Browser」をインストール済みであれば、以下の画面が立ち上がります。ファイルが色々グレーアウトされてますが、迷わず右下の「Allow」ボタンをクリックします。

するとどうでしょう。先程動かしたプログラムでデータが挿入されています。

実行エラーになるときは

クラスの構造を変えるとデータベースの構造も変わってしまうので、エラーになってしまいます。今回の場合ですと、「Persion.swift」クラスにプロパティを追加すると発生します。

シミュレータで「EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0)」というエラーが出力される場合、コンソールを確認します。

この部分にmigrate(マイグレート)の文字を見つけたら、データベースの構造を変更したためにエラーが発生しています。

fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=10 "Migration is required due to the following errors:
- Property 'Person.birthday' has been added.
- Property 'Person.genre' has been added." UserInfo={NSLocalizedDescription=Migration is required due to the following errors:
- Property 'Person.birthday' has been added.
- Property 'Person.genre' has been added., Error Code=10}: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-800.0.46.2/src/swift/stdlib/public/core/ErrorType.swift, line 178

私の場合、Personクラスに「birthday」と「genre」プロパティを追加したのでマイグレートしてね。と言われています。

本来はこちらのサイト「http://llcc.hatenablog.com/entry/2015/08/22/183019
でご紹介頂いているような方法が良いと思いますが、すこし面倒なので、データベースファイルを削除して対応します。

※登録してるデータは消えますのでご注意を。また、ファイルを使用してロックしている可能性もあるので、データファイルを削除する場合は、Realm Browserや、シミュレータが起動している場合を、終了させてからのほうが安全かと思います。

ターミナルから、以下のように「rm -i」で対象のファイルを削除していきます。「dafault.realm.management」はディレクトリなので、「cd」コマンドで移動して配下のファイルも削除しておきます。

 

$ ls -ltr
total 16
drwxr-xr-x  7 hoge  staff   238  4 27 22:34 default.realm.management
-rw-r--r--@ 1 hoge  staff  4096  4 27 23:01 default.realm
prw-------@ 1 hoge  staff     0  4 27 23:01 default.realm.note
-rw-r--r--@ 1 hoge  staff  1184  4 27 23:11 default.realm.lock

$ rm -i *
remove default.realm? y
remove default.realm.lock? y
rm: default.realm.management: is a directory
remove default.realm.note? y

$ ls
default.realm.management

$ cd default.realm.management/
$ ls
access_control.balance.mx	access_control.new_commit.cv	access_control.write.mx
access_control.control.mx	access_control.pick_writer.cv
$ rm -i *
remove access_control.balance.mx? y
remove access_control.control.mx? y
remove access_control.new_commit.cv? y
remove access_control.pick_writer.cv? y
remove access_control.write.mx? y

$ ls

このあと、再度Xcodeからシミュレータを実行すれば動くようになるはずです。(私はこれで新しいテーブル構造で動作することを確認できました。)

ではでは。

RealmSwift(レルム)が使えるようになるまで

だいぶハマったので、記録を残しておきます。
かなり雑なメモですが誰かの助けになれば…。

環境

Xcode Version 8.0 (8A218a)
MacOS Sierra バージョン10.12

ドキュメント

https://realm.io/jp/docs/swift/latest/#section

※ここを先に読んだほうが良いかもしれません。

インストールについての解説文があります。

手順

1.まずは、Xcodeでプロジェクトを作る
2.ターミナルで作ったプロジェクトと同じディレクトリに移動

3.cocoapodsで初期化する

pod init

4.vi(またはSublimeTextなどのエディタ)でPodsFileを修正する

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

use_frameworks!
target 'DemoRealm' do
  # Pods for DemoRealm
  pod 'RealmSwift'
end

5.ターミナルでpod installする

$ pod install
Analyzing dependencies
Downloading dependencies
Installing Realm (0.98.2)
Installing RealmSwift (0.98.2)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `DemoRealm.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 2 total pods installed.

[!] Automatically assigning platform ios with version 10.0 on target DemoRealm because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.

6.DemoRealm.xcworkspaceを開く
7.ビルドするとエラーがでる(T△T)

こちらと同じエラー

お知恵をお借りして
$ gem install bundler
$ cd /DemoRealm
$ bundle init

を以下から流していきます。

8.まずは「gem install」。自分の環境は/usr/local/binにインストールしたのでこちらと同じようにしてます。
http://qiita.com/AcaiBowl/items/4bb4708de03e6ee14a4a

なので…

$ sudo gem install -n /usr/local/bin bundler
Successfully installed bundler-1.14.6
Parsing documentation for bundler-1.14.6
Installing ri documentation for bundler-1.14.6
1 gem installed

という感じのコマンドを打つ。

9.先ほど拝見した↓に従ってGemfileを修正し、「bundle install」。

 

$ vi Gemfile 
$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/..........
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies...
Installing i18n 0.8.1
Installing minitest 5.10.1
Installing thread_safe 0.3.6
Installing claide 0.9.1
Installing fuzzy_match 2.0.4
Installing nap 1.1.0
Installing cocoapods-downloader 0.9.3
Installing cocoapods-search 0.1.0
Installing cocoapods-stats 0.6.2
Installing netrc 0.7.8
Installing cocoapods-try 0.5.1
Installing colored 1.2
Installing escape 0.0.4
Installing molinillo 0.4.5
Using bundler 1.14.6
Installing tzinfo 1.2.3
Installing cocoapods-plugins 0.4.2
Installing cocoapods-trunk 0.6.4
Installing activesupport 4.2.8
Installing cocoapods-core 0.39.0
Installing xcodeproj 0.28.2
Installing cocoapods 0.39.0
Bundle complete! 1 Gemfile dependency, 22 gems now installed.
Bundled gems are installed into ./vendor/bundle.
$ bundle exec pod --version
0.39.0
$ bundle exec pod install
Updating local specs repositories
(ここでハングアップ)

…ハングアップしたので今度はこちらにお知恵を借りました。

http://qiita.com/g08m11/items/1a0ff1580cca870ed209

「pod setup」のダウンロードにえらく時間がかかります。

 pod repo remove master
Removing spec repo `master`
$ pod setup
Setting up CocoaPods master repo
  $ /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress
  Cloning into 'master'...
  remote: Counting objects: 1226398, done.        
  remote: Compressing objects: 100% (257/257), done.        
  remote: Total 1226398 (delta 120), reused 35 (delta 35), pack-reused 1226094        
  Receiving objects: 100% (1226398/1226398), 393.79 MiB | 138.00 KiB/s, done.
  Resolving deltas: 100% (595335/595335), done.
  Checking connectivity... done.
  Checking out files: 100% (151676/151676), done.
Setup completed

ここでXcodeのプロジェクトを最初から作り直し、もう一度「pod init 」→「Podfileの修正」→「pod install」を行います。

$ pwd
/swift練習/DemoRealm
$ pod init
$ view Podfile 
$ pod install
Analyzing dependencies
Downloading dependencies
Installing Realm (2.6.2)
Installing RealmSwift (2.6.2)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `DemoRealm.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 2 total pods installed.

[!] Automatically assigning platform ios with version 10.0 on target DemoRealm because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.

あとは「Pods」の「Products」配下が以下の画像のような状態になっていることを確認してビルド。

これで、作った「DemoRealm.xcworkspace」を開いてビルドするとコンパイルできるようになりました。良かった良かった…(´ε` )

具体的なコーディングは次回「RealmSwift(レルム)で実装編」にします。

XcodeでBitbucketと連携する

 この記事の内容は古いです。Xcode9から設定方法が変更されています。詳しくは以下のページを参考にしてください。

xcodeを使ってbitbucketでコードが管理できる様にする
Xcodeからのリモートの登録Xcode9.0(変わっていたので)
Xcode9でリモートリポジトリをBitbucketに指定する。

 

Xcodeでbitbucketと連携する方法です。プロジェクト作成済みでもできます。

1.bitbucketでリポジトリを作成します

bitbucketにログインして、リポジトリを新規作成します。

リポジトリ名はなんでも良いですが、一応分かりやすいようにXcodeのプロジェクト名に合わせておきます。

作成すると、右上にリポジトリのURLが表示されます。これをコピーしておきます。

2.Xcodeでリポジトリを設定します

Xcodeを開いて、プロジェクトを新規作成します。ちなみにすでに作成済みのプロジェクトでもあとからbitbucketと連携することはできます。

メニューの[Source Control]から以下のようにメニューを選択します。

画面上部の「Remote」文字をクリックし、「Add Remote…」をクリックします。

「Name:」は「Origin」のままで良いです。「Address」に先程bitbucketでリポジトリを作成した際にコピーしたURLを貼り付けます。

「Done」をクリックすると設定が完了します。

3.bitbucketへPushします

XcodeのプロジェクトをbitbucketへPushします。

できました。