Swift 从appDelegate访问viewController结构
我在ViewController中定义了一个结构,如下所示:Swift 从appDelegate访问viewController结构,swift,xcode,Swift,Xcode,我在ViewController中定义了一个结构,如下所示: struct Meme { var topText : String var bottomText : String var originalImage : UIImage var memedImage: UIImage } 现在,当我尝试使用以下代码从appDelegate访问结构时,我得到一个未解决的标识符错误: var memes = [Meme]() 有人能解释为什么会发生这种情况,以及我如何从appDelegate访问v
struct Meme {
var topText : String
var bottomText : String
var originalImage : UIImage
var memedImage: UIImage
}
现在,当我尝试使用以下代码从appDelegate访问结构时,我得到一个未解决的标识符错误:
var memes = [Meme]()
有人能解释为什么会发生这种情况,以及我如何从appDelegate访问viewController结构吗
谢谢 如果没有类的实例,则无法访问该类的属性 在
AppDeletegate
文件中执行以下操作:
// create instance of your viewcontroller class
let viewController = ViewController()
// access the property
viewController.memes = [Meme]()
如果没有类的实例,则无法访问该类的属性 在
AppDeletegate
文件中执行以下操作:
// create instance of your viewcontroller class
let viewController = ViewController()
// access the property
viewController.memes = [Meme]()
这可以通过另一种方式实现:
import UIKit
var memes = [Meme]()
class ViewController: UIViewController {
}
好的,这些模因不在UIViewController的范围内,但它们在同一个文件中,就像这样,它们是全局变量
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
print(memes[0].bottomText)
return true
}
祝你一切顺利。这可以通过另一种方式:
import UIKit
var memes = [Meme]()
class ViewController: UIViewController {
}
好的,这些模因不在UIViewController的范围内,但它们在同一个文件中,就像这样,它们是全局变量
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
print(memes[0].bottomText)
return true
}
祝您一切顺利。假设结构如您所说是在ViewController类中定义的,您将需要使用ViewController的命名空间以以下方式访问它:
var memes = [MyViewController.Meme]()
假设结构是在ViewController类中定义的,如您所说,您将需要使用ViewController的命名空间以以下方式访问它:
var memes = [MyViewController.Meme]()
我早就知道了。抱歉,更新延迟。有相同问题的人,请创建一个名为“Meme.swift”的新swift文件,然后在该文件中写入Meme结构。你的问题现在应该解决了。谢谢 我早就知道了。抱歉,更新延迟。有相同问题的人,请创建一个名为“Meme.swift”的新swift文件,然后在该文件中写入Meme结构。你的问题现在应该解决了。谢谢 显示更多代码以查看上下文。为什么需要此选项?这是针对Udacity项目的,我遇到了完全相同的问题。请在找到解决方案时更新,我也会这样做。应用程序委托似乎无法识别结构成员。不幸的是,根据本课程的说明,我们必须在appDelegate中使用此结构作为共享模型,因此解决方法无法解决此问题。我早就发现了这一点。抱歉,更新延迟。有相同问题的人,请创建一个名为“Meme.swift”的新swift文件,然后在该文件中写入Meme结构。你的问题现在应该解决了。谢谢显示更多代码以查看上下文。为什么需要此选项?这是针对Udacity项目的,我遇到了完全相同的问题。请在找到解决方案时更新,我也会这样做。应用程序委托似乎无法识别结构成员。不幸的是,根据本课程的说明,我们必须在appDelegate中使用此结构作为共享模型,因此解决方法无法解决此问题。我早就发现了这一点。抱歉,更新延迟。有相同问题的人,请创建一个名为“Meme.swift”的新swift文件,然后在该文件中写入Meme结构。你的问题现在应该解决了。谢谢此解决方案会导致另一个错误“无法调用非函数类型“[MemeViewController.Meme.type]”。X-Code建议可以通过删除“()”来解决此问题,但这只会导致更多错误。这将是
[MemeViewController.Meme]()
。无需放置。键入
。然后我会确保在顶层声明结构(而不是在任何类中)。然后您应该能够按照课程所述使用它。问题是,示例是在类内编写的!非常感谢。它可以按照OP显示的方式编写,但需要在视图类的上方/外部。此解决方案会导致另一个错误“无法调用非函数类型的值”[MemeViewController.Meme.type]”。X-Code建议可以通过删除“()”来解决此问题,但这只会导致更多错误。这应该是[MemeViewController.Meme]()
。无需放入.Type
。我会确保您的结构是在顶层声明的(而不是在任何类中)。然后你应该能够像课程所描述的那样使用它。问题是这个例子是在课堂上写的!非常感谢你。它可以按照OP显示的方式编写,但需要在view类之上/之外。