【问题标题】:"Expression are not allowed at top level" in function call of a class in SwiftSwift中类的函数调用中的“顶级不允许表达式”
【发布时间】:2014-07-24 09:28:35
【问题描述】:

以下是我的代码。我不明白为什么每次都会显示此错误。

import UIKit
import Foundation

class BaseLabel:UILabel
{
     func setFontAndTitle(FontName:String,FontSize:CGFloat,Title:String) {
        self.font = UIFont(name: FontName, size: FontSize)
        self.text = Title
    }

}

var lbl =  BaseLabel()
lbl.setFontAndTitle ("Areal", FontSize: 14, Title: "Check label") 

在最后一行我收到错误“表达式不允许在顶层”

【问题讨论】:

  • 将其粘贴到 Playgrounds Beta 6 中,效果很好。顺便说一句,不要在参数名称中使用大写字母,这样可以很容易地将它们与类型区分开来。
  • 其实我用的是真实的项目,每次应用小尺寸参数后都显示相同
  • Jeff - 尝试使用真实项目而不是游乐场。在操场上我什至无法导入 UIKit。
  • @EvgeniyKleban 如果您无法导入 UIKit,则意味着您创建了一个 Mac OS X Playground,其中 UIKit 不是有效的框架。
  • 在 Swift 中,顶级语句在 Playgrounds 中工作(并且“脚本”文件从命令行运行),但在应用程序类文件中不起作用。

标签: ios iphone xcode swift


【解决方案1】:

您试图在课外输入代码。你需要把它放在你的类中并包含在函数体中。请看一下我的解决方案:

import UIKit
import Foundation

class BaseLabel:UILabel
{
    func setFontAndTitle(FontName:String,FontSize:CGFloat,Title:String) {
        self.font = UIFont(name: FontName, size: FontSize)
        self.text = Title
    }

    func changePropertiesOfLabel(){
    var lbl =  BaseLabel()
     lbl.setFontAndTitle ("Areal", FontSize: 14, Title: "Check label")
    }

}

【讨论】:

    【解决方案2】:

    除了在游乐场或命令行项目中运行它, 我们也可以在单视图应用中运行它!

    假设我们的代码写在 ViewController.swift 文件中:

    import UIKit
    import Foundation
    
    class BaseLabel:UILabel {
         func setFontAndTitle(FontName:String,FontSize:CGFloat,Title:String) {
            self.font = UIFont(name: FontName, size: FontSize)
            self.text = Title
        }
    }
    
    class ViewController:UIViewController {
        override func viewDidLoad() {
            var lbl =  BaseLabel()
            lbl.setFontAndTitle (FontName: "Areal", FontSize: 14, Title: "Check label")
            print(lbl)
        }
    }
    

    【讨论】:

      【解决方案3】:

      问题是 Xcode 不知道何时运行您的 var lbl = BaseLabel() lbl.setFontAndTitle ("Areal", FontSize: 14, Title: "Check label")。要解决此问题,您必须将代码放在具有特定运行点(函数或操场)的位置。您可以将其放入 ViewController 中的 viewDidLoad 函数中,将其放入 Playground 或其他按顺序运行其代码的文件中,或者将其放入新函数中

      解决方案 1:

      class ViewController: UIViewController {
         override func viewDidLoad() {
            var lbl = BaseLabel()
            lbl.setFontAndTitle(FontName: "Calibri", FontSize: 14, Title: "Check Label"
         }
      }
      

      解决方案 2:

      把它放在操场上。

      解决方案 3(可能是最好和最有效的方法):

      func customizeLabel() {
          var lbl = BaseLabel()
          lbl.setFontAndTitle(FontName: "Calibri", FontSize: 14, Title: "Check Label"
      }
      

      对于解决方案 3,在 viewDidLoad 或其他活动运行点内运行 customizeLabel()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-26
        • 1970-01-01
        • 1970-01-01
        • 2015-05-16
        • 1970-01-01
        • 1970-01-01
        • 2016-05-13
        相关资源
        最近更新 更多