2015-06-18 3 views
4

Я начинаю быстро и проводил некоторые испытания. Честно говоря, я едва знаю, что я делаю, поэтому, пожалуйста, попробуйте объяснить ясно. Я делал приложение генератора случайных чисел &, которое нужно было добавить в uitextfield, чтобы пользователь мог ввести свое предположение о следующем произвольно сгенерированном номере. Я продолжаю получать ошибку при попытке использовать оператор if для сравнения произвольно сгенерированного числа с введенным числом. В текстовом поле.Как преобразовать UITextField в целое число в Swift 2.0?

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate { 
    @IBOutlet weak var input: UITextField! 
    @IBOutlet weak var infoLabel: UILabel! // Displayed Before The User Clicks Button For The First Time. 
    @IBOutlet weak var numberLabel: UILabel! 
    @IBAction func go(sender: AnyObject) { 
     // Remove The Text Under The Button 
     infoLabel.text = " " 

     // Generate Random Number 
     let randomNumber = Int(arc4random_uniform(11)) 

     // Change The "Number Label's" Text In Order To Show The Randomly Generated Number To The User   
     numberLabel.text = "\(randomNumber)" 

     // Check To See If The User Guessed The Correct Number, And If They Did, Tell Them They Were Right 
     if input == randomNumber { 
      infoLabel.text = "Your Guess,\(randomNumber) Was Correct!" 
     } 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
} 
+1

Что ожидает U, когда U сравнивает тип UITextField с типом Int? Исправьте его 'if ([input.text intValue] == randomNumber)' // Синтаксис Obj-C – David

+0

Какое сообщение об ошибке вы получаете? –

ответ

9

Чтобы преобразовать входную строку в целое число с помощью Swift 2:

let guess:Int? = Int(input.text) 

if guess == randomNumber { 
    // your code here 
} 
+0

Спасибо, ТАК МНОГО !!! Я должен был просто поставить восклицательный знак после input.text, но после этого он работал отлично. –

3

Чтобы получить доступ к его ИНТ значение:

Int(input.text) 

Входная переменная имеет тип UITextField, который является объектом и не может быть по сравнению с Int. Таким образом, вам нужно получить доступ к его тексту, который является строкой, и его нельзя сравнивать с Int, поэтому, преобразовывая его в Int, используя выражение выше, оно даст вам значение int, которое имеет строка.

+0

Кому бы это ни было, вы можете объяснить, почему? Я не вижу ничего плохого в его ответе. – nick

+0

@nick Возможно, потому что вопрос задает вопрос о Swift 2, в котором 'toInt()' был удален. –

+0

@ 0x7fffffff А я вижу, отредактирую свой ответ – nick

2

Вы можете преобразовать строку в междунар с помощью этого:

input.text.toInt (!)

+0

Нет, не в Swift 2 - это для Swift 1. – Moritz

-1

в Swift 3 вы должны сравнить эквивалентный тип номера: например, преобразовать строку в int.

let guess = Int(input.text!)! 
if guess == randomNumber {your code} 
Смежные вопросы