Šta je novo?

firebase citanje vrednosti

probotzor

Slavan
Učlanjen(a)
22.04.2012
Poruke
4,696
Poena
315
Pozdrav, potrebno mi je da procitam vrednost username odavde, ali nikako ne uspevam.

Screen Shot 2017-02-16 at 10.59.34 AM.png

Koristim swift i cini mi se da je putanja do toga FIRDatabase.database().reference().child("users").child(uid).child("username"), ali nikako ne mogu da nadjem neku funkciju koja bi to procitala, da bih mogao posle da smestim taj string u promenjljivu.
Uid mi je FIRAuth.auth()?.currentUser?.uid

Da li neko ima neki predlog?

Inace evo ovde snimak aplikacije da vidite sta zelim. https://mega.nz/#!VlxhRQBQ!dV6qCmzMSmf1WoUV5EdP53p4LVJq62FWTCWVUL8VnYM Trenutno mi se prikazuje uid, ali bih zeleo da se prikazuje username u ovome "Posted by:".

Hvala u napred.
 
Poslednja izmena:
Ovo izgleda kao hash, probaj kucaj ga na google i nadji tip podatka kako i sta.

Sent from my SM-G935F using Tapatalk
 
to sto lici na hash je uid, koji se dodeljuje svakom korisniku prilikom registracije i sadrzi username vrednost u sebi, ali tu username vrednost nikako ne mogu da procitam, a potrebna mi je da bih je smestio u varijablu i prikazao ispod slike u aplikaciji

ugl su sve stringovi
 
1. svaki post mora imati referencu na usera (tj. njegov uid)
2. Kada imas to onda ako se dobro secam nesto na ovaj fazon 😀
Kod:
ref.child("users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
  if let value = snapshot.value as? NSDictionary {
  	if let username = value["username"] as? String {
  		print(username);
  	}
  }
}) { (error) in
    print(error.localizedDescription)
}
Mozes i sa guard vrv lepse 🙂
 
Ja se onda izvinjavam ovo je van mog domasaja , eto ga gospodin Nitro da spasi dan.

Mislio sam da je čistokrvni hash pa bi mogao da ga identifikujes sa hash identifier.

Sent from my SM-G935F using Tapatalk
 
1. svaki post mora imati referencu na usera (tj. njegov uid)
2. Kada imas to onda ako se dobro secam nesto na ovaj fazon 😀
Kod:
ref.child("users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
  if let value = snapshot.value as? NSDictionary {
  	if let username = value["username"] as? String {
  		print(username);
  	}
  }
}) { (error) in
    print(error.localizedDescription)
}
Mozes i sa guard vrv lepse 🙂

da, kapiram to, cini mi se i da sam probao, ali da mi nije dalo da vidim string van toga, recimo u metodi sa kojom prosledjujem objekat u kom se nalazi uid, image, time, description, title i username koji mi je prazan uvek

sa ovim tvojim kodom mi otstampa username, ali se ne vidi van toga

Screen Shot 2017-02-17 at 14.50.52.png

treba mi ovde u ovom objektu, probao sam da izbacim username gore, ali onda opet dobija praznu vrednost
 
Poslednja izmena:
To je asinhroni poziv - sto znaci taj closure { ... } se izvrsava kada se zavrsi completion handler (tvoj kod nastavi da se izvrsava, a taj deo u closure se izvrsi tek kada od servera aplikacija dobije repsonse).
Da bi ti radilo trebao bi da prebacis taj kod gde koristis username tu ispod/umesto print(username)

Druga stvar - cuvaj samo uid u posts. Zasto?
1. user mozda u nekom trenutku promeni username (ako bude ta opcija)
2. posto imas uid, preko njega mozes da povuces username, samim tim ne treba da ga store-ujes jer onda uzaludno trosis prostor u bazi
 
trenutno mi se i cuva samo uid, ali sam zeleo da imam opciju da se vidi koji je user okacio sliku

verovatno sam to nakaradno implementirao u kodu, posto sam bukvalno napravio poseban objekat gde ce se cuvati usernameovi za odredjene uide

to mi je tada delovalo lako, ali sada vidim da imam problem

u sustini, u trenutku kada uradim print username ja mogu da ga dodelim nekom labelu koji je na view controleru koji mi sluzi za postovanje i on stvarno pokaze username kada kliknem dugme, ali kada zelim iz toga labela da procitam sadrzaj, dobijem praznu vrednost

ako nista, bar sam uspeo da resim ono sto mi na klipu postovi nisu bili poredjani lepo
sada su poredjani od najnovijeg pa na dole
 
Poslednja izmena:
Ako ti nešto piše na labelu a ti ne "pročitaš" to onda nešto pogrešno radiš. Jel čitaš sa imeLabele.text?

Takođe praktikuj da radzvajaš model od UI - dakle UI ti služi samo za prikazivanje stanja modela, eventualno vučeš sa njega podatke kada korisnik pravi novi unos.

Sent from my MI 5 using Tapatalk
 
pravilno sam citao, probacu sutra opet kada mi se odblokira firebase, za danas mi je exceeded quota
 
ne znam, cesto mi javlja da mi je quota exceeded, a znam da nikada ne prekoracim :/
 
uspeo sam da resim problem, samo sam ubacio onaj tvoj kod u dugme sa kojim biram sliku, onda kreiram nevidljivi label koji primi vrednost od username, a onda u onoj metodi koja prosledi objekat procitam vrednost iz labela i stavim ga u objekat i sada mi se pojavljuje username ispod slike 😀
 
Poslednja izmena:
A zasto ne ako hoces bas najjednostavniji nacin, nesto tipa - dodas promenljivu za to u taj view controller tipa:
Kod:
class ViewController: UIViewController {
var username: String?
...

Kod:
ref.child("users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
  if let value = snapshot.value as? NSDictionary {
  	if let username = value["username"] as? String {
  		self.username = username
  	}
  }
}) { (error) in
    print(error.localizedDescription)
}

Kod:
// kada prosledjujes objekat umesto da citas sa labela
guard let uname = username else {
  // nije postavljen, uradi nesto - baci exception, prekini izvrsavanje sa return, sta god trebas
  return
}

// odavde na dalje ti je uname sadrzi korisnicko ime u tom closure
...
// kada zavrsis sta si trebao uradis samo
self.username = nil
// to radis da resetujes na nil, kako bi opet mogao sve da odradis za sledeci put
 
Poslednja izmena:
mnogo me nervira to sto mi firebase stalno izbacuje exceeded quota, a znam da nisam ni priblizno...

bar sam resio problem, ali dzabe kada svako malo ne mogu da kacim nove postove zbog firebase :/
 
Pravo da ti kažem to još nisam iskusio. Da probaš da napraviš novu bazu?

Sent from my MI 5 using Tapatalk
 
Nazad
Vrh Dno