2017-04-07 62 views
0

所以我有一个类,我想创建一个实例,只要应用程序启动。我想从我的ViewController中的开关/切换初始化它的一些属性。我在哪里申报启动应用程序的变量,访问ViewController属性?

这里是类,其中我试图创建一个实例:

import Foundation 

class PropertyCollection { 
    var property1: Bool 

    init (property1: Bool) { 
     self.property1 = property1 

    } 

    func disableAll() { 
     self.property1 = false 

    } 

    func enableAll() { 
     self.property1 = true 

    } 

    func info() -> String { 
     return "The properties are: \(property1)" 
    } 

} 

所以: 把申报AppDelegate.swift给了我一个错误“unresoved标识的使用‘property1Switch’ “):

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

     var thePropertyCollection: PropertyCollection = PropertyCollection(property1: property1Switch.isOn) 

     return true 
    } 

添加”ViewController“。在“property1switch”前面也没有帮助。我得到另一个错误

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    var thePropertyCollection: PropertyCollection = PropertyCollection(property1: ViewController.property1Switch.isOn) 

    return true 
} 

实例成员‘property1Switch’不能在类型‘视图控制器’使用”),但我并不想对类型“视图控制器“使用型‘property1Switch’ “”。我以为这是你如何引用其他类的东西?

+0

请分享一下PropertyCollection类的代码吗? PropertyCollection是一个控制器类? –

+0

已添加类。我不知道控制器班是什么,但我的猜测是否定的。 – Marmelador

回答

0

它应该是这样的:

见你这个对象的初始化,所以你必须提供初始值。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

     var thePropertyCollection: PropertyCollection = PropertyCollection(property1: true) 

     return true 
} 
+0

这不是我想要做的。我希望提供一个初始值,但它应该来自'ViewController'属性'property1Switch'。 这是问题出现的地方。 – Marmelador

+0

好吧,所以你是不正确的做法。 –

0

您可以用类似的问题,处理这一个: 'Use of Unresolved Identifier' in Swift 一个可能的问题是,你的新类有从另一个不同的目标(S)。

例如,它可能有一个测试目标,另一个没有。对于这种特定情况,您必须将所有类都包含在测试目标中,或不包含任何类。

+0

很明显,情况并非如此。 –

相关问题