2017-04-07 31 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

很明顯,情況並非如此。 –