Swiftを使ってiOSの「為替レート変換」アプリを作る方法を生成するためのプロンプトです。
【出力例】
iOSで為替レート変換アプリを作るプロジェクトは、APIの呼び出し、JSONデータの解析、およびピッカービュー(UIPickerView)の使用など、多くの基本的なスキルを学べる良い機会です。
開発環境
- macOS 最新版
- Xcode 最新版
- Swift 5.x以上
手順
1. 新しいXcodeプロジェクトを作成
Xcodeを開き、「Create a new Xcode project」を選びます。次に、iOSの「App」テンプレートを選択してください。
2. プロジェクト設定
- Product Name:
CurrencyConverter
- Team: (あれば選ぶ)
- Organization Identifier: 任意(例:
com.example
) - Interface: SwiftUI or Storyboard(ここではStoryboardを使用)
- Language: Swift
3. 必要なUIコンポーネントを配置
Storyboardに以下のUIコンポーネントを配置します。
- 2つのUIPickerView(変換前通貨と変換後通貨)
- 1つのUITextField(変換する金額)
- 1つのUILabel(変換結果表示)
- 1つのUIButton(変換ボタン)
4. API呼び出しに必要なコードを追加
外部APIを使用して為替レートを取得します。https://api.exchangerate-api.com/v4/latest/USD
のようなAPIを使う場合、以下のようなコードでAPIを呼び出します。
import Foundation
struct ExchangeRate: Decodable {
let rates: [String: Double]
}
func fetchExchangeRate(completion: @escaping(ExchangeRate ? ) - > Void) {
let url = URL(string: "https://api.exchangerate-api.com/v4/latest/USD") !URLSession.shared.dataTask(with: url) {
(data, response, error) in
if let data = data {
do {
let decodedData =
try JSONDecoder().decode(ExchangeRate.self, from: data) completion(decodedData)
}
catch {
completion(nil)
}
}
else {
completion(nil)
}
}.resume()
}
5. UIPickerViewと為替レート変換ロジック
UIPickerViewのデリゲートとデータソースを設定し、選択された通貨に基づいて為替レートを変換します。
import UIKit
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { // ... IBOutlet接続(略)
var exchangeRateData: ExchangeRate ?
override func viewDidLoad() {
super.viewDidLoad()
fetchExchangeRate {
(data) in
if let data = data {
self.exchangeRateData = data
}
}
}
// UIPickerViewDataSource & UIPickerViewDelegateのメソッド(略)
@IBAction func convertCurrency(_ sender: Any) { // 為替レート変換ロジック
}
}
6. 変換ロジック
@IBAction func convertCurrency(_ sender: Any) {
if let amountText = amountTextField.text,
let amount = Double(amountText),
let fromCurrency = fromCurrencyPicker.selectedRow(inComponent: 0),
let toCurrency = toCurrencyPicker.selectedRow(inComponent: 0) {
// レートを取得 let fromRate = exchangeRateData?.rates[fromCurrency] ?? 1.0 let toRate = exchangeRateData?.rates[toCurrency] ?? 1.0
// 変換計算 let convertedAmount = amount * (toRate / fromRate) resultLabel.text = "\(convertedAmount)"
}
}
上記のコードは簡単なもので、全てを網羅しているわけではありません。このコードは一例に過ぎないので、必要に応じて調整が必要です。特にエラーハンドリングやユーザーエクスペリエンスの向上(例:ローディングインジケーターの表示、エラーメッセージの表示など)が必要です。