没有成员“数据”错误消息(Swift、Xcode)

Posted

技术标签:

【中文标题】没有成员“数据”错误消息(Swift、Xcode)【英文标题】:No member 'data' error message (Swift, Xcode) 【发布时间】:2016-09-13 19:43:55 【问题描述】:

我想将变量 CorrectAnswerTotal 和 QuestionsAskedTotal 传递到我的第二个视图控制器(分数视图控制器),但是我不断收到错误消息“类型 'ScoreViewController' 没有成员 '数据'”

谁能告诉我如何解决这个问题。

另一个问题是我无法在我的原始视图控制器中单独调用这些变量,因为将它们添加到结构中。我是编程初学者,有什么方法可以做到吗?

提前致谢。

 struct CarryToNextViewController 

var CorrectAnswerTotal = 0
var QuestionsAskedTotal = 0




override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 

let ViewController:ScoreViewController = segue.destinationViewController as! ScoreViewController
ScoreViewController.data = CarryToNextViewController(CorrectAnswerTotal: Int, QuestionsAskedTotal: Int)


编辑

即使将ScoreViewController 重命名为viewController,我仍然会收到相同的错误消息。这是修改后的代码:

  class viewController: UIViewController 


@IBOutlet var QuestionLabel: UILabel!
@IBOutlet var Buttons: [UIButton]!

var Questions = [Question]()
var QuestionNumber = Int()
var AnswerNumber = Int()

struct CarryToNextViewController 

var CorrectAnswerTotal = 0
var QuestionsAskedTotal = 0




 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)       

  let ViewController:ScoreViewController = segue.destinationViewController as!  ScoreViewController
  viewController.data = CarryToNextViewController(CorrectAnswerTotal: 0, QuestionsAskedTotal: 0)

【问题讨论】:

为了避免这些错误——你应该引用ViewController而不是ScoreViewController 符合命名约定,变量名以小写字母开头,类名以大写字母开头。 您正在使用类类型而不是类型上的引用来分配值。试试 ViewController.data = CarryToNextViewController(CorrectAnswerTotal: 0, QuestionsAskedTotal: 0) 【参考方案1】:

ScoreViewController 是一个类,而不是一个变量。请改用ViewController.data = ...,不过您应该将其重命名为viewController 以减少混淆。

(事实上,自始至终使用标准变量/类命名将使代码更易于分析。)

【讨论】:

感谢您的帮助,但是当我将 ScoreViewController 更改为 viewController 时,我收到错误消息“使用未解析的标识符 'viewController'。 您是否重命名了 ViewController 并为其赋值? 我已经这样做了,但代码似乎仍然无法正常工作,我已经在我的问题中对其进行了编辑,因此希望能够清楚我哪里出错了。 @SausageMachine 他没有重命名类,他的第一个视图控制器被命名为viewController 你应该检查这个***.com/questions/28996730/…【参考方案2】:

您不能使用viewController.data 访问let ViewController:ScoreViewController,因为它们具有不同的变量名称(第一个是大写第二个是小写)它们应该是相同的。

由于您的第一个视图控制器被称为viewController,为了避免更多混乱,我建议您替换这两行:

let ViewController:ScoreViewController = segue.destinationViewController as!  ScoreViewController
viewController.data = CarryToNextViewController(CorrectAnswerTotal: 0, QuestionsAskedTotal: 0)

let destViewController:ScoreViewController = segue.destinationViewController as!  ScoreViewController
destViewController.data = CarryToNextViewController(CorrectAnswerTotal: 0, QuestionsAskedTotal: 0)

【讨论】:

以上是关于没有成员“数据”错误消息(Swift、Xcode)的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 / Swift 3 - 类型“CGColorRenderingIntent”没有成员“RenderingIntentDefault”

Audiokit 4.9.5 在 xcode 11.4 + swift 5.2 中崩溃,没有有用的错误消息

Swift 3 - 实例化视图控制器后没有成员错误

Xcode 8:类型“UserDefaults”没有成员“标准”

“FileManager”类型的值没有成员“urlsForDirectory”-AppDelegate Swift 3 错误

无法使用 Swift 获取 userCKRecordID