%PDVNFOUT6OJUTΛಡΉ w ҎԼʹ6OJUTͷҰͭͱͯ͠ղઆ͞Ε͍ͯΔ w IUUQTHJUIVCDPN3FBDUJWF93Y4XJGUCMPC NBTUFS%PDVNFOUBUJPO6OJUTNE w ຊޠʹ༁͍ͯ͠Δํ͕͍Βͬ͠Ό͍·͢ w IUUQTHJUIVCDPNUJELJKZVO3Y4XJGUCMPC USBOTMBUFTJOUPKBQBOFTF%[email protected] 6OJUTNE
func validateUsername(username: String) -> Observable { if username.characters.count == 0 { return Observable.just(.Empty) } // this obviously won't be if username.rangeOfCharacterFromSet(NSCharacterSet.alphanumericCharacterSet().invertedSet) != nil { return Observable.just(.Failed(message: "Username can only contain numbers or digits")) } let loadingValue = ValidationResult.Validating return API .usernameAvailable(username) .map { available in if available { return .OK(message: "Username available") } else { return .Failed(message: "Username already taken") } } .startWith(loadingValue) }
%SJWFSͷಛҎԼʹॻ͔Ε͍ͯΔ w 6OJUTNE w IUUQTHJUIVCDPN3FBDUJWF93Y4XJGUCMPC NBTUFS%PDVNFOUBUJPO6OJUTNE w ຊޠʹ༁͍ͯ͠Δํ͕͍Βͬ͠Ό͍·͢ w IUUQTHJUIVCDPNUJELJKZVO3Y4XJGUCMPC USBOTMBUFTJOUPKBQBOFTF%[email protected] 6OJUTNE