【问题标题】:Displaying text from an array into text box将数组中的文本显示到文本框中
【发布时间】:2021-10-21 07:48:08
【问题描述】:

首先,我想为这个新手问题道歉,我正在努力学习这个问题。我制作了几个基本的 iOS 应用程序,但这是我第一次尝试 macOS Storyboard 应用程序,没有接受过正规的编程培训。

我正在尝试创建一个程序,通过显示可在故事中使用的角色、设置和动作属性来帮助我的合作伙伴(职业作家)完成他们的创意块。 (附上截图以便更好地展示)

我相信我已经完成了基本的窗口格式设置,但我陷入了如何将“属性”按钮链接到文本字段以显示数组中的元素的问题上。在我让它工作之前,我只有占位符元素,但理想情况下,您会单击属性按钮,它会将数组中的随机属性显示到文本框中。

到目前为止,我已经包含了我能够拼凑的内容,但它未能在行中构建以输出到文本框,我似乎无法弄清楚。

错误是:

无法将() 类型的值赋给String 类型

感谢任何帮助!

import Cocoa
    
class SecondViewController: NSViewController {
    
    @IBOutlet weak var CharAtt1: NSTextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }

    @IBAction func CharAttBut1(_ sender: NSButton) {
        let array = ["Swift", "SwiftUI", "UIKit"]
        let randomElement = array.randomElement()!
        
        CharAtt1.stringValue = print("\(randomElement)")
        
    }
}

【问题讨论】:

  • 嗨,Gloostik。请放心,这里非常欢迎新手问题。你的问题似乎很好,所以它应该得到一些积极的回应!
  • print() 是一个不返回值的函数,因此会出现错误消息,因为您要做的就是分配应该删除调用的字符串,然后执行 CharAtt1.stringValue = randomElement。注意ramdomElement 已经是 String 类型了

标签: arrays swift


【解决方案1】:

显然,有问题的代码行是:

CharAtt1.stringValue = print("\(randomElement)")

它有很多问题。最谨慎的是print 有一个类型(大约,我正在简化)(Any) -> Void。您正在调用它,并传递一个字符串 ("\(randomElement)")。这会将字符串打印到控制台,但它也会返回一个()(也就是Void 类型的空元组)。正如错误消息所暗示的,这不能分配给CharAtt1.stringValue,它需要String

解决方法很简单,不要打电话print

// If you do want to print it, do it in a separate expression
print("\(randomElement)")
CharAtt1.stringValue = "\(randomElement)"

但还有另一个问题:"\(randomElement)" 没用。 randomElement 已经是 String。你可以写:

print(randomElement)
CharAtt1.stringValue = randomElement

我会说"\(anything)" 是一种反模式。如果您需要将某些内容转换为字符串,我认为最好以对您想要的转换更明确的方式执行此操作。例如。使用String(anything)(如果存在这样的初始化程序),或String(describing: anything),或String(reflecting: anything)(取决于您的用例)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    相关资源
    最近更新 更多