我有一小段代码是为了取一个字符串,在一个库中找到单词,并将它们从其他单词的随机数组中取代。出于某种原因,当我按下按钮时,没有任何反应!我在操场上工作,所以我做错了什么?为什么UITextView的文本没有被替换?
应用代码:
import UIKit
extension Array {
func randomItem() -> T {
let index = Int(arc4random_uniform(UInt32(self.count)))
return self[index]
}
}
extension String {
func replace(target: String, withString: String) -> String
{
return self.stringByReplacingOccurrencesOfString(target, withString: withString, options: NSStringCompareOptions.LiteralSearch, range: nil)
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
maintext.text = "The Dog Chases the Ball"
self.submit.setTitle("Change It", forState: UIControlState.Normal)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBOutlet var maintext: UITextView!
@IBOutlet var submit: UIButton!
@IBAction func submitTapped(sender: UIButton) {
self.submit.setTitle("Again", forState: UIControlState.Normal)
var AllWords = maintext.text
var WordsArray = AllWords.componentsSeparatedByString(" ")
var Dog = ["Pup", "Canine", "Wolf"]
var Ball = ["Frisbee", "Stick", "Car"]
AllWords.replace("Dog", withString: Dog.randomItem()).replace("Ball", withString: Ball.randomItem())
}
}
玩的理由:
import UIKit
import Foundation
extension Array {
func randomItem() -> T {
let index = Int(arc4random_uniform(UInt32(self.count)))
return self[index]
}
}
extension String
{
func replace(target: String, withString: String) -> String
{
return self.stringByReplacingOccurrencesOfString(target, withString: withString, options: NSStringCompareOptions.LiteralSearch, range: nil)
}
}
var Text = "The Dog Loves to Chase the Ball"
//: Old Text Loaded as an array
var AllWords = Text.componentsSeparatedByString(" ")
//: New Word Library
let Dog = ["Pup", "Canine", "Wolf"]
let Ball = ["Frisbee", "Stick", "Car"]
for element in AllWords {
Text.replace(element, withString: Dog.randomItem())
Text.replace(element, withString: Ball.randomItem())
}
Text.replace("Dog", withString: Dog.randomItem()).replace("Ball", withString: Ball.randomItem())
谢谢!
谢谢!变量这有帮助。不幸的是,当我按下按钮时,我仍然没有收到任何新的文本。 –
打印'AllWords'。它是否包含您期望的价值?唯一能够想到的其他想法是将'maintext.text = AllWords'行包装在'dispatch_async'块中,以防您离开主线程。 – JAL
查看我的答案更新并尝试'dispatch_async'块。 – JAL