20210915のSwiftに関する記事は4件です。

すぐにアラートを作る為に (UIAlertController)

今回の内容 3種類のアラートをすぐ作れる様にカスタム前の状態で、書き残しておきます。 コードと表示結果 アラート1(preferredStyle: .alert)  let usualAlert = {() -> UIAlertController in let alert = UIAlertController(title: "タイトルだよ", message: "アラートの内容だよ", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "No", style: .destructive, handler: { _ in print("No") })) alert.addAction(UIAlertAction(title: "Yes", style: .default, handler: { _ in print("Yes") })) return alert }() self.present(usualAler, animated: true, completion: nil) アラート2(preferredStyle: .actionSheet)  let usualActionSheetAlert = {() -> UIAlertController in let alert = UIAlertController(title: "タイトルだよ", message: "アラートの内容だよ", preferredStyle: .actionSheet) alert.addAction(UIAlertAction(title: "Yes", style: .default, handler: { _ in print("Yes") })) alert.addAction(UIAlertAction(title: "No", style: .destructive, handler: { _ in print("No") })) alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { _ in print("cancel") })) return alert }() self.present(usualActionSheetAlert, animated: true, completion: nil) アラート3(preferredStyle: .alert) TextFieldを表示 let textfieldInAlert = {() -> UIAlertController in let alert = UIAlertController(title: "タイトルだよ", message: "アラートの内容だよ", preferredStyle: .alert) alert.addTextField { (alertTextField:UITextField) in alertTextField.placeholder = "文字を入力してね" } alert.addAction(UIAlertAction(title: "Yes", style: .default, handler: { _ in print("Yes") })) alert.addAction(UIAlertAction(title: "No", style: .destructive, handler: { _ in print("No") })) return alert }() self.present(textfieldInAlert, animated: true, completion: nil) 終わり ご指摘、ご質問などありましたら、コメントまでお願い致します。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Swift]修飾子のLazyとは?

はじめに 最近はコードでUIを作るのにハマっています。その中で、Lazyが必要な場面が出てきたので備忘録的にまとめておきます。 どんなときに使えるの? 結論、一つの用法として、コードでUIを作っていくときなどに使えることがあります。 例えば、UIButtonであれば以下のコードのように書けます。 このコードは”Lazy”を付けなくても問題なくUIButtonを生成することができます。 let button: UIButton = { let button = UIButton() button.setTitle("tap", for: .normal) button.backgroundColor = .blue return button }() では、いつ"Lazy"が必要になるのか、それはCollectionViewやTableViewでdelegate、dataSourceをselfに設定するときです。 "Lazy"をつけることで、delegateやdataSourceにselfを設定することができるようになります。 "Lazy"をつけないと怒られます。 この他にも、"Lazy"をつけることで自身のプロパティやメソッドにもアクセスすることが可能になります。 lazy var infoCollectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() let cv = UICollectionView(frame: .zero, collectionViewLayout: layout) cv.delegate = self cv.dataSource = self cv.backgroundColor = .brown return cv }() もう少し掘り下げて"Lazy"について知りたい方は以下の記事が参考になると思います。 https://qiita.com/reo0612/items/c2421bca65d5723b1055 おわりに 最近夜に犬の散歩をするのにハマっています。おわり。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Swift】Int型 ⇄ 16進数文字列 ⇄ バイト配列(UInt8配列) を相互変換する

はじめに BLE通信などを実装していると、Write / Read のタイミングでバイト型を扱うと思います。 業務でファームウェアの仕様に合わせ、Int型 ⇄ 16進数文字列 ⇄ バイト配列 で相互変換する必要がありました。 ここら辺は忘れやすいかなと思い、まとめることにしました! 環境 Xcode12.5 Swift5 変換していく 今回は、以下のデータを変換していきます。 Int型 16進数文字列 バイト配列(UInt8配列) 123456789 "075BCD15" [7, 91, 205, 21] 16進数文字列 -> Byte配列 ごりごり加工していくので、別途 extension に関数を定義しています。 extension String { func toBytes() -> [UInt8]? { var hexString = self if hexString.count % 2 == 1 { hexString = "0" + hexString } var bytes = [UInt8]() bytes.reserveCapacity(hexString.count / 2) var index = hexString.startIndex for _ in 0..<hexString.count / 2 { let nextIndex = hexString.index(index, offsetBy: 2) if let byte = UInt8(hexString[index..<nextIndex], radix: 16) { bytes.append(byte) } else { return nil } index = nextIndex } return bytes } } 上の関数を使ってみます。 let hexString = "075BCD15" let bytes = hexString.toBytes() print(bytes) // Optional([7, 91, 205, 21]) Byte配列 -> 16進数文字列 0埋めできていないですね。。。 let bytes = Data([7, 91, 205, 21]) let hexString = bytes.map { String(format: "%02hhX", $0) }.joined() print(hexString) // 75BCD15 Int型 -> 16進数文字列 let integer = 123456789 let hexString = String(format: "%02X", integer) print(hexString) // 1234567879 16進数文字列 -> Int型 let hexString = "075BCD15" let integer = Int(hexString, radix: 16) print(integer) // Optional(123456789) 以上です! 参考にした記事 How to convert an Int to Hex String in Swift How to convert Data to hex string in swift Swift 3 で16進数文字列と整数の相互変換 How do i convert HexString To ByteArray in Swift 3
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Swift】[備忘] Int型 ⇄ 16進数文字列 ⇄ バイト配列(UInt8配列) の相互変換

はじめに BLE通信などを実装していると、Write / Read のタイミングでバイト型を扱うと思います。 業務でファームウェアの仕様に合わせ、Int型 ⇄ 16進数文字列 ⇄ バイト配列 で相互変換する必要がありました。 ここら辺は忘れやすいかなと思い、まとめることにしました! 環境 Xcode12.5 Swift5 変換していく 今回は、以下のデータを変換していきます。 Int型 16進数文字列 バイト配列(UInt8配列) 123456789 "075BCD15" [7, 91, 205, 21] 16進数文字列 -> Byte配列 ごりごり加工していくので、別途 extension に関数を定義しています。 extension String { func toBytes() -> [UInt8]? { var hexString = self if hexString.count % 2 == 1 { hexString = "0" + hexString } var bytes = [UInt8]() bytes.reserveCapacity(hexString.count / 2) var index = hexString.startIndex for _ in 0..<hexString.count / 2 { let nextIndex = hexString.index(index, offsetBy: 2) if let byte = UInt8(hexString[index..<nextIndex], radix: 16) { bytes.append(byte) } else { return nil } index = nextIndex } return bytes } } 上の関数を使ってみます。 let hexString = "075BCD15" let bytes = hexString.toBytes() print(bytes) // Optional([7, 91, 205, 21]) Byte配列 -> 16進数文字列 0埋めできていないですね。。。 let bytes = Data([7, 91, 205, 21]) let hexString = bytes.map { String(format: "%02hhX", $0) }.joined() print(hexString) // 75BCD15 Int型 -> 16進数文字列 let integer = 123456789 let hexString = String(format: "%02X", integer) print(hexString) // 1234567879 16進数文字列 -> Int型 let hexString = "075BCD15" let integer = Int(hexString, radix: 16) print(integer) // Optional(123456789) 以上です! 参考にした記事 How to convert an Int to Hex String in Swift How to convert Data to hex string in swift Swift 3 で16進数文字列と整数の相互変換 How do i convert HexString To ByteArray in Swift 3
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む