2016-06-15 10 views
0

Я делаю простой проект, используя firebase.viewDidLoad загружается каждый раз

В моем представленииDidLoad fiction Я создаю объект класса. Я хочу, чтобы меня создавали только один раз в течение моего рабочего цикла. Но он создает новые объекты каждый раз, когда я посещаю этот ViewController.

override func viewDidLoad() { 
    super.viewDidLoad() 

    let urlArray = ["http://i.imgur.com/VAWlQ0S.gif", "http://i.imgur.com/JDzGqvE.gif", "http://67.media.tumblr.com/4cd2a04b60bb867bb4746d682aa60020/tumblr_mjs2dvWX6x1rvn6njo1_400.gif", "https://media.giphy.com/media/TlK63ELk5OPDzpb6Tao/giphy.gif", "http://i3.photobucket.com/albums/y90/spicestas/GeriHalliwell-Calling-new1.gif", "http://media.tumblr.com/tumblr_lnb9aozmM71qbxrlp.gif"] 

    var counter = 1 

    for url in urlArray { 

     let nsUrl = NSURL(string: url) 

     let girls = ProfileClass() 

     girls.profilePhotoUrl = url 
     girls.profileGender = "female" 
     girls.profileName = "girlsname\(counter)" 
     girls.profileSurname = "girlsurname\(counter)" 
     girls.interest = "men" 
     girls.uid = "\(randomStringWithLength(45))" 

     counter++ 
     girls.SaveUser() 


} 

Может быть, я должен написать свой код в другой функции? Или проблема может быть вызвана моей петлей?

ответ

3

Вы должны создать другой класс, который обрабатывает ваши данные. Назовите это вашим менеджером данных.

Сделайте это одноэлементным или сделайте его членом вашего делегата приложения или что угодно.

Когда вы загружаете контроллер вида, о котором идет речь, получите данные от этого объекта.

Это хорошая статейка на одиночек в Swift

https://thatthinginswift.com/singletons/

+0

Вот хорошая статья о том, как не стать одноэлементно монстр https://www.objc.io/issues/13-architecture/singletons/ –

0

Если вы хотите, чтобы ваш код будет выполняться только тогда, когда приложение запускается затем переместить его внутри

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

из ваш AppDelegate.

Таким образом, он будет выполнен только тогда, когда пользователь запустит ваше приложение.

Как rigdonmr сказал в комментариях ниже, есть несколько методов, которые можно использовать, когда вы хотите запустить блок кода только один раз. Вместо этого я отвечу конкретно, как запускать блок кода один раз во время при запуске приложения.

+0

это не общий ответ о том, как выполнить что-то когда-то в контроллере вида. Это просто говорит, что есть место в sdk, где код будет выполнен один раз. Пользователь хочет, чтобы контроллер вида специально вызывал функциональность один раз – rigdonmr

+0

@rigdonmr: Вы уверены, что OP специально должен выполнить этот код внутри 'ViewController'? Потому что он сказал: «Я хочу, чтобы он был создан только один раз во время моего рабочего цикла» –

+1

Да, но просто не хочу передавать неправильную идею о том, что каждый раз, когда он хочет что-то назвать, в общем случае он должен прибегать к вызову в приложении делегировать. – rigdonmr

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