2015-12-27 3 views
1

Я только начинаю Swift, потратив значительное время на изучение Java. Я пытаюсь создать приложение для клавиатуры. Я создал новую целевую KeyBoardViewController и пытаюсь получить доступ к массиву, который я создал и мутировал в моем классе ViewController. Я немного смущен, читая документацию относительно уровней доступа в быстром. Я вижу, что мои ViewController.swift и KeyboardViewController.swift находятся в разных папках. Я импортировал свой модуль, содержащий ViewController, в свой KeyboardViewController, но он все еще не может получить доступ к массиву, который мне нужен.Как получить доступ к массиву из другой цели (KeyboardViewController)

Я читал об использовании struct(),. нотация и объявление класса ViewController как общедоступного, но ни один из них не распознал мой массив. Когда я использовал struct(), он, казалось, менял свой массив каждый раз, когда я ссылался на него в ViewController и все еще ничего не узнавал в KeyboardViewController. Любая помощь приветствуется!

ответ

1

Вот простое решение:

В любом из ваших классов, вы можете сделать что-то вроде этого:

import UIKit 
var arr = [String]() 

class ViewController: UIViewController { 

Тогда вы можете получить доступ к arr ни в одном из ваших классов. Надеюсь это поможет.

+0

Благодарим вас за помощь! К сожалению, когда я пытаюсь это сделать, он все равно не находит символ. Может ли это быть, потому что это от модуля differnet? – Alex

0

Создайте еще один класс со статическим экземпляром переменной ViewController следующим образом:

class DataStore { static var yourArray:[String]? }

затем сохранить экземпляр массива в классе ViewController следующим образом:

DataStore.yourArray = self.array

позже в классе KeyboardViewController вы можете получить доступ к экземпляру массива следующим образом:

DataStore.yourArray

+0

Благодарим вас за ответ. Пробовав этот метод, я получаю еще одну странную проблему. Все компилируется, но я получаю сбой. Я попытался напечатать размер моего массива, пока я мутирую его в ViewController (используя DataStore.yourArray.append), и размер будет указывать 5, однако, когда я перехожу к моему KeyboardViewController, размер возвращается к 0, и я сбой с Я не могу проиндексировать его. Что может привести к тому, что массив будет отличаться между файлами? Мне пришлось немного изменить код, потому что я получал сообщение об ошибке: Спасибо – Alex

+0

Вот что я изменил это на: импорт UIKit класс Главная { var pics: [UIImage] init (фото: [UIImage]) { self.pics = [UIImage]() } } var instance = Main (pics: [UIImage]()) – Alex

+0

Поскольку вы храните массив UIImages, вам просто нужно импортировать UIKit в класс DataStore & он должен работать –

Смежные вопросы