2016-01-19 59 views
0
@IBOutlet weak var enterName: UITextField! 
@IBOutlet weak var presentName: UITextView! 
@IBOutlet weak var independceStatue: UITextField! 
@IBOutlet weak var driverSelection: UITextField! 


var entity : [Entity] = [] 
var nameList : [String] = [] 
var period1 = "" 
var counting = 0 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext 
    let request = NSFetchRequest(entityName: "Entity") 
    var results : [AnyObject]? 

    do{ 
     results = try context.executeFetchRequest(request) 
    } catch { 
     results = nil 
    } 
    if results != nil { 
     self.entity = results as! [Entity] 
    } 

    if !entity.isEmpty{ 
     presentName.text = entity.last?.period1Core 
    } 

} 



func setValues() { 
    nameList = [enterName.text!] 
} 

@IBAction func setName(sender: UIButton) { 
    setValues() 
    for item in nameList{ 
     period1 += (item + " ") 
    } 
    presentName.text = period1 
    enterName.text = "" 
} 


@IBAction func start(sender: UIButton) { 
    let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext 
    let entity = NSEntityDescription.insertNewObjectForEntityForName("Entity", inManagedObjectContext: context) as! Entity 
    entity.period1Core = presentName.text 
    do { 
     try context.save() 
     print("Item Saved") 
    } catch _ { 
     print("Saved Failed") 
    } 
    **Problem ->** let randomIndex = Int(arc4random_uniform(UInt32(nameList.count))) 
    driverSelection.text! = nameList[randomIndex] 
    print(randomIndex) 

} 

我试图随机出从数组名nameList挑一个元素,但是当我运行程序和打印randomIndex,第一次后,我按下按钮,将始终返回数组中的最后一个元素。无法随机挑选一个元素的数组雨燕

如果我退出模拟器并再次运行它,当我按下按钮时,它会返回我fatal error Array Index is out of range。我的代码有什么问题,为什么我不能从数组中随机选择一个元素?

+0

在哪一行,您在接收到所述运行时错误的参数值可能会出现在开始崩溃'致命错误数组索引超出范围',因为'arc4random_uniform'函数总是返回一个介于0和传递的参数之间的随机数字,在行driverSelection.text中减去1. –

+0

! = nameList [randomIndex] – 123558

+0

对不起,我不小心指向错误的行在driverSelection.text接收到错误! = nameList [randomIndex] – 123558

回答

0

你的setValues()函数总是用输入的姓氏替换整个数组。这就是为什么它似乎返回最后一个值。

你可能打算在其中使用nameList.append(enterName.text!)。

因为名称列表尚未收到的名称和arc4random_uniform被称为具有零