XCODE9にバージョンアップしてカメラ撮影ができない。
並列処理(XCODE Version 8.0 (8A218a))


並列処理の動作テスト用プログラムです。
シンプルにできたので公開します。
(playgroundではなく、Single View Applicationで実行してください、私はボタン一つつけて実行しました。)
let concurrentQueue = DispatchQueue(label: "test.queue", qos: .background , attributes: .concurrent) for i in 1 ... 10{ sleep(1) print("before concurrentQueus.sync",i) } concurrentQueue.async { for i in 1 ... 10{ sleep(1) print("in concurrentQueus.sync",i) } } for i in 1 ... 10{ sleep(1) print("after concurrentQueus.sync",i) } ||< 結果は >|| before concurrentQueus.sync 1 before concurrentQueus.sync 2 before concurrentQueus.sync 3 before concurrentQueus.sync 4 before concurrentQueus.sync 5 before concurrentQueus.sync 6 before concurrentQueus.sync 7 before concurrentQueus.sync 8 before concurrentQueus.sync 9 before concurrentQueus.sync 10 after concurrentQueus.sync 1 in concurrentQueus.sync 1 after concurrentQueus.sync 2 in concurrentQueus.sync 2 after concurrentQueus.sync 3 in concurrentQueus.sync 3 after concurrentQueus.sync 4 in concurrentQueus.sync 4 after concurrentQueus.sync 5 in concurrentQueus.sync 5 after concurrentQueus.sync 6 in concurrentQueus.sync 6 after concurrentQueus.sync 7 in concurrentQueus.sync 7 after concurrentQueus.sync 8 in concurrentQueus.sync 8 after concurrentQueus.sync 9 in concurrentQueus.sync 9 after concurrentQueus.sync 10 in concurrentQueus.sync 10
で、「in」と「after」が同時に処理をされていることが分かります。
OS X Caption Version 10.11.6でXCODEを8から9にバージョンアップできない。
【問題】
OS X Caption Version 10.11.6+XCODE8を使っていたのですが、
XCODE9にバージョンアップしようとしてAppleStoreからバージョンアップボタンをおしてもバージョンアップできず、ずっとグルグルアイコンを表示していました。
【解決方法】
1.XCODE8を削除
2.AppleStoreで「Apple」を検索
(先起動および設定が入るため時間がかかります)
(私が実行した日時では、MACのバージョンが「Version 10.12.6」になりました。)
3.AppleStoreでアップデート欄にあるXCODE以外のAppをバージョンアップする。
4.AppleStoreでXCODEをバージョンアップする。
これで、無事XCODE9をインストールできました。
(XCODE8で昔作ったアプリを開けてみると、エラー多発で改修作業が不安です、、)
リアルタイムエラー表示の対応メモ(XCODE Version 8.0 (8A218a))
エディタエリアで文字入力すると、リアルタイムでエラー表示をする機能があります。
エラー表示の対策メモです。
リアルタイムでエラー表示する設定は「メニューバー→File→Project Setting→Show live issues for source code」で指定します。(エディタエリアで文字を入力しないと、最適化されないようですので、設定後エディタエリアで文字を入力してください)
①Class 'ViewController' has no initializers
【エラー例】
class ViewController: UIViewController {
var blnStop : Bool;
【解決方法】
var blnStop : Bool?;
※変数宣言時に値を必ず取る型宣言(nilにならない)になっているにもかかわらずnilで初期化しているためです。型の後ろに?を入れてnilを許可します。
②Invalid redeclaration of ‘変数名(まはた定数名)’
定義済みの変数名(または定数名)を再宣言しようとするとエラーになります。
【エラー例】
var letsample : Int = 2;
var letsample : Int = 1;
【解決方法】
var letsample : Int = 2;
var letsample2 : Int = 1;
Playgroundを使って配列の動作確認(XCODE Version 8.0 (8A218a))
【準備】
XCODEを起動した画面からです。
①画面下方の「Get started with a playground」をクリック
②そのまま画面右下の「Next」をクリック
(Name:MyPlayground Platform:iOS)
③そのまま画面右下の「Create」をクリック
画面の味方
右側に各行での状態表示。
下側に実際の出力が表示されます。
変数の動きをつかみやすいので便利です。
【コードを追加する。(コピペでOK)】
/*基本的な調べ方は「arystr.AAA」のようなプログラムを組んだ場合、「Option」キーを押しながら"AAA"部分にマウスカーソルをあわせクリックすれば、簡単な定義情報が表示されます。
更に詳しい情報が必要であれば、「Swift Standard Library」を選べば別画面で情報を取得できます*/
/*基本的な調べ方は「arystr.AAA」のようなプログラムを組んだ場合、「Option」キーを押しながら"AAA"部分にマウスカーソルをあわせクリックすれば、簡単な定義情報が表示されます。
更に詳しい情報が必要であれば、「Swift Standard Library」を選べば別画面で情報を取得できます*/
//: Playground - noun: a place where people can play
import UIKit
//はじめの配列1
var arystr : [String] = ["A","C","B"];
//配列の個数
arystr.count;
//または
arystr.endIndex;
//配列の中身を表示
arystr[0];
// Hint:配列の開始は0から
//配列の並び替え
arystr.sort();
//すべてのデータを個々に表示1
print("すべてのデータを個々に表示1");
arystr.description;
//すべてのデータを個々に表示2(実行結果は下方画面に表示されます)
print("すべてのデータを個々に表示2");
var i : Int;
for i in 1 ... arystr.count
{
print(arystr[i-1]);
}
//すべてのデータを個々に表示3(実行結果は下方画面に表示されます)
print("すべてのデータを個々に表示3");
for i in arystr
{
print(i);
}
//すべてのデータを個々に表示4(実行結果は下方画面に表示されます)
print("すべてのデータを個々に表示4");
let list = arystr.joined(separator: ", ");
print(list);
//下記はもっと慣れた方の配列操作です。開発現場によっては使わないときもありますのでご注意ください。
//キュー(先に入れたデータは先に出す方式、データを入れる行為をエンキュー 出す行為をデキューと言います。)
//arystr.a
arystr = ["A" , "B", "C"];
arystr.description;
arystr.insert("ENTER" , at: 0);
arystr.description;
arystr.removeLast();
arystr.description;
//スタック(先に入れたデータは先に出す方式、データを入れる行為をプッシュ、データを出す行為をポップという)
//arystr.a
print("キューの見本");
arystr = ["A" , "B", "C"];
arystr.append("Last");
arystr.description;
arystr.popLast(); //表示と同時に配列の要素を削除します。
arystr.description;
データー保存(超簡単バージョン)(XCODE Version 8.0 (8A218a))
let documents = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let file = "file.txt"
let text = "some text"
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
let path = dir.appendingPathComponent(file)
//writing
do {
try text.write(to: path, atomically: false, encoding: String.Encoding.utf8)
}
catch {}
//reading
do {
let text2 = try String(contentsOf: path, encoding: String.Encoding.utf8)
print(“ここから)
print(text2)
print(“ここまで”)
}
catch {}
便利リンク
下記の情報をすごく参考にさせていただいています。
【下記英語サイトです。】
SwiftDoc.org http://swiftdoc.org/v3.0/
リファレンスです。
https://www.youtube.com/watch?v=KhqXUi1SF4s
ViewController間の画面遷移がわかりやすく説明されています。
【番外編!】
macOS Sierra のクリーンインストールから Python 開発用の初期設定まで一挙公開 - akiyoko blog
新しいMACの購入または、何かの事情で再セットアップを行いたい場合。
このホームページに従って操作していけば、良質な環境開発を作成できます。
おすすめです!