代码之家  ›  专栏  ›  技术社区  ›  user3069232

在Swift 4.2中反转字符串

  •  3
  • user3069232  · 技术社区  · 6 年前

    iOS 11、Swift 4.2、Xcode 10

    let str = self.label!.text
    let newStr = String(str?.reversed())
    

    我收到一条错误消息,无法调用参数列表类型为“(ReversedCollection?)的类型为“String”的初始值设定项。。。那我怎么才能找回我的绳子呢?

    4 回复  |  直到 6 年前
        1
  •  13
  •   Ilya Kharabet    6 年前

    str 设置newStr之前的变量:

    guard let unwrappedStr = str else { return }
    let newStr = String(unwrappedStr.reversed())
    
        2
  •  7
  •   Daniil Subbotin    6 年前

    str .

    if let str = self.label?.text {
        let newStr = String(str.reversed())
    }
    
        3
  •  4
  •   LinusGeffarth    6 年前
    extension Optional where Wrapped == String {
        func reversed() -> String? {
            guard let str = self else { return nil }
            return String(str.reversed())
        }
    }
    

    用法:

    str?.reversed()
    
        4
  •  3
  •   CRD    6 年前

    str 是可选的。我们将再添加几个(guard&map free;-)。。。

    对于那些在C中梦想的人:

    let newStr = str == nil ? nil : String(str!.reversed())
    

    nil 和/或想要一个 String

    let newStr = String((str ?? "").reversed())
    

    这大概是你能做的最短的了。

        5
  •  1
  •   Faizal Nowshad KN    4 年前

    反转文本值 可以通过反转将textfield值传递给另一个textfield

      class ViewController: UIViewController {
    
      var str = NSString()
    
    
    @IBOutlet weak var txt1: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
    }
    
    @IBAction func button1(_ sender: Any) {
    
    
        let story: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let new = story.instantiateViewController(withIdentifier: "RevViewController")as! RevViewController
    
    
        let str = txt1.text!
        new.txtvalue = String(str.reversed())
    
    
        self.navigationController?.pushViewController(new, animated: true)
    
    
        }
    
       }
    

    第二视图控制器

       class RevViewController: UIViewController {
    
     var txtvalue = String()
    
    @IBOutlet weak var textfld2: UITextField!
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        textfld2.text = txtvalue
    
    }
    
    
    }