I use a singleton in my project but have been reading on stackOverflow singletons are bad.
I have an app that in the app delegate gets the currentUser information. I need to access this information all through out the app, what way other than making a singleton is there to store the currentUser then access it?
I also use a singleton for a firebaseController (a view controller used to parse data from firebase again used throughout the app). Is this a good idea or what would be a better alternative?
There are a couple of ways you could avoid a singleton for your current user.
You could hold the current user as a class-level var inside your app delegate, and then pass it into your view controllers or other classes that need it.
You could persist the current user information in Core Data or NSUserDefaults and retrieve it where you need it.
I prefer option 1 because it lends itself better to unit testing code which accesses the current user.
Singletons are not inherently bad, in my opinion. I think they become bad when they are used as global variables that you can simply reach up and access from anywhere in your code. That should be avoided! But you could have a singleton that you pass around and don't access unless it is passed to you.