【问题标题】:How to get input from user using Swift in playground project in Xcode 8.2?如何在 Xcode 8.2 的游乐场项目中使用 Swift 从用户那里获取输入?
【发布时间】:2017-01-19 04:10:27
【问题描述】:

我正在尝试从 Playground for iOS 中的用户那里获取动态输入,但它不起作用。我尝试了以下代码,但没有成功。

import Foundation
import UIKit
func input() -> String {
    var keyboard = FileHandle.standardInput
    var inputData = keyboard.availableData
    var strData = NSString(data: inputData, encoding: String.Encoding.utf8.rawValue)!

    return strData.trimmingCharacters(in: NSCharacterSet.newlines)
}

input()

【问题讨论】:

  • 我认为在 Playground 中无法获得命令行输入。

标签: ios swift xcode8 xcplayground


【解决方案1】:

从 Playground 获取输入是不可行的,您可以在 XCode 项目中使用:

print("Please enter your name")
var name = readLine()
print("name: \(name!)")

或者:

func input() -> String {
   let keyboard = FileHandle.standardInput
   let inputData = keyboard.availableData
   return String(data: inputData, encoding: .utf8)!
}

print("Please enter your name")
var name = input()
print("name: \(name!)")

【讨论】:

    【解决方案2】:

    您可以从 textField 中获取您的 Playground 输入,如下所示:

        import PlaygroundSupport
        import UIKit
    
        class V: UIViewController {
            var textField = UITextField(frame: CGRect(x: 20, y: 20, width: 200, height: 24))
            override func viewDidLoad() {
                super.viewDidLoad()
                view.addSubview(textField)
                textField.backgroundColor = .white
                textField.delegate = self
            }
        }
        extension V: UITextFieldDelegate {
            func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
                // Do stuff here
                return true
            }
        }
        let v = V()
        v.view.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
        PlaygroundPage.current.liveView = v.view
        PlaygroundPage.current.needsIndefiniteExecution = true
    

    【讨论】:

      【解决方案3】:

      我认为不可能在 Xcode 的 Playground 上获得用户输入。

      【讨论】:

        【解决方案4】:

        print("Please Enter your favorite programming language", terminator: ".") let name = readLine() print("Your favorite programming language is \(name!).")

        在上述程序中,打印功能输出请输入您喜欢的编程语言。在调试区。语句 let name = readLine() 在调试区等待用户输入。

        如果您键入“Swift”并按回车,readLine 函数会将该字符串分配给常量名称,并将输出显示为您最喜欢的编程语言是 Swift。

        由于 readLine 函数返回一个可选字符串,我们强制将常量解包为名称!在语句 print("你最喜欢的编程语言是 (name!)").

        【讨论】:

          【解决方案5】:

          是否可以在与空游乐场相同的部分“回答”项目。您可以使用“ask()”和“show()”方法。

          例如:

          func square(num: Double) -> Double {
              return num * num
          }
          
          show("Please type a number to square it:")
          var sqrt = askForNumber()
          show("Result: \(square(num: Double(sqrt)))")
          

          抱歉,我在 iPad 上写字,输入代码很困难。

          How it looks during execution

          【讨论】:

            猜你喜欢
            • 2013-09-03
            • 1970-01-01
            • 1970-01-01
            • 2017-09-14
            • 2019-04-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多