2017-01-10 18 views
2

構造体要素の配列をグローバルに格納しているため、繰り返し読み込む必要なく別のクラスにアクセスできます。配列を構造体または他のメソッドにグローバルに格納する

struct collectionStruct { 
    var name : String 
    var description : String 
    var title : String 
    var image : PFFile 
    var id: String 
} 

と変数:

var collectionArray = [collectionStruct]() 

と配列を構築するためのいくつかのコード:

私は構造体を持っている

for object in items { 

       let arrayName = object.object(forKey: fromName) as! String 
       let arrayDescription = object.object(forKey: fromDescription) as! String 
       let arrayTitle = object.object(forKey: fromTitle) as! String 
       let arrayImage = object.object(forKey: fromImage) as! PFFile 
       let arrayID = object.objectId as String! 

       collectionArray.append(collectionStruct(name: arrayName, 
                  description: arrayDescription, 
                   title: arrayTitle, 
                    image: arrayImage, 
                     id: arrayID!)) 
      } 
私はに別の構造体を作成することを考えていた

ここで少し失われた配列自体を保持してください。これは私が考えていたものです。

struct globalArray { 

var collectionArray = [collectionStruct]() 

} 

おそらく方法オフ

答えて

1

あなたがcollectionStructではなく、あなたのstruct CollectionStruct命名検討すべきである - それはそれはタイプであることを示して。どこでも配列にアクセスするには、シングルトンを作成することができます。シングルトンを使用すると、プライベートコンストラクタを使用してインスタンスを1つしか使用できないことが保証されます。次に例を示します。感謝を行います

Global.sharedInstance.collection 
2

あなたはどこからでもアクセスすることができます世界クラスのシングルトンを使用することができます。

class GlobalArray { 
    static let shared = GlobalArray() 
    var collectionArray = [collectionStruct]() 
} 

とし、このようにアクセス値の割り当てまたは読み取り:

GlobalArray.shared.collectionArray

1

グローバルだけ(任意のオブジェクト外)は、任意のファイルの最上位レベルで

var collectionArray = [collectionStruct]() 

を宣言することができ、それが利用可能になる

例えば

var collectionArray = [collectionStruct]() 

class MyClass { 
    func printArray() { 
     print(collectionArray) 
    } 
} 
+1

class Global { private init() { } static let sharedInstance = Global() var collection = [CollectionStruct]() } 

では、次の使用し、それを使用するには。私は自分自身のためにそれを難し​​くしようとしていた。 – Pippo

関連する問題