Solution
- バリデーションライブラリとして、SwiftCopを使用します。
- HogeTrialという独自のバリデーションクラスを作成し、trialメソッドでひらがなとカタカナのバリデーションを実装します。
import Foundation
import SwiftCop
// SwiftCop[https://github.com/andresinaka/SwiftCop]用のバリデーションクラス
public enum HogeTrial: TrialProtocol {
case Required
case Hiragana
case Katakana
public func trial() -> ((evidence: String) -> Bool){
switch self {
case .Hiragana:
return { (evidence: String) -> Bool in
// 全て全角ひらがなかどうか
let hiraganaRegEx = "^[ぁ-ゞ]+$"
let hiraganaTest = NSPredicate(format:"SELF MATCHES %@", hiraganaRegEx)
return hiraganaTest.evaluateWithObject(evidence)
}
case .Katakana:
return { (evidence: String) -> Bool in
// 全て全角カタカナかどうか
let hiraganaRegEx = "^[ァ-ヾ]+$"
let hiraganaTest = NSPredicate(format:"SELF MATCHES %@", hiraganaRegEx)
return hiraganaTest.evaluateWithObject(evidence)
}
default:
return { (evidence: String) -> Bool in
return false
}
}
}
}
使用方法
class ViewController: UIViewController {
@IBOutlet weak var nameHiraganaTextField: UITextField!
@IBOutlet weak var nameKatakanaTextField: UITextField!
// Let's create a cop!
let swiftCop = SwiftCop()
override func viewDidLoad() {
super.viewDidLoad()
swiftCop.addSuspect(Suspect(view: nameHiraganaTextField, sentence: "ひらがなを入力してください", trial: HogeTrial.Hiragana))
swiftCop.addSuspect(Suspect(view: nameKatakanaTextField, sentence: "カタカナを入力してください", trial: HogeTrial.Katakana))
}
}