Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  12 1350
Har noen rekker med slike koder, mange er mye lengre...

Kode

if (ordliste==1){[self skrivFraListe1];}
if (ordliste==2){[self skrivFraListe2];}
if (ordliste==3){[self skrivFraListe3];}
if (ordliste==4){[self skrivFraListe4];}
if (ordliste==5){[self skrivFraListe5];}
if (ordliste==6){[self skrivFraListe6];}
if (ordliste==7){[self skrivFraListe7];}
if (ordliste==8){[self skrivFraListe8];}
Det ser så dumt ut med slike lange rekker. Hvordan skrive det om til en linje. Det kan vel skrives om til noe som ligner på dette:

[self skrivFraListe[int value ordliste]];

Noen tips?
Nå kan ikke jeg noe særlig Objective-C, men det jeg vanligvis ville gjort er å lage en egen liste/array som inneholder alle de andre listene (som det ser ut som er det du trenger å lagre), og dermed legge til objektene i lista slik at man kan hente dem frem ved å skrive f.eks. skrivFraListe[1], skrivFraListe[2] etc. Dermed kan man hente frem alle verdiene i en enkel loop.
Sist endret av Stupebrett; 18. januar 2014 kl. 11:30.
Det kommer veldig an på hva skrivFraListe er om den vil fungere i en array. For meg så ser det ut som om du sender en melding til en void kommando om å kjøre koden sin, hvis ordliste er et bestemt tall. Om det er tilfellet, vil nok ikke en array fungere i loopen.
Sitat av Proggy Vis innlegg
Det kommer veldig an på hva skrivFraListe er om den vil fungere i en array. For meg så ser det ut som om du sender en melding til en void kommando om å kjøre koden sin, hvis ordliste er et bestemt tall. Om det er tilfellet, vil nok ikke en array fungere i loopen.
Vis hele sitatet...
Da er det vel stengt tatt bare å forandre koden litt slik at hver liste har sin egen interne "skrive"-funksjon? Slik at man kan gjøre "liste[5].skriv()" eller noe i den duren.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av Stupebrett Vis innlegg
Da er det vel stengt tatt bare å forandre koden litt slik at hver liste har sin egen interne "skrive"-funksjon? Slik at man kan gjøre "liste[5].skriv()" eller noe i den duren.
Vis hele sitatet...
Eventuelt bruke et av tusen bibliotek for I18N, som gettext.
Slik ser de ut, listene mine:


Kode

- (void) skrivFraListe2{
    if (ord1==1){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvis", _lesetekst.text];}
    if (ord1==2){self.lesetekst.text = [NSString stringWithFormat:@"%@ hva", _lesetekst.text];}
    if (ord1==3){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvor", _lesetekst.text];}
    if (ord1==4){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvem", _lesetekst.text];}
    if (ord1==5){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvorfor", _lesetekst.text];}
    if (ord1==6){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvordan", _lesetekst.text];}
    if (ord1==7){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvilken", _lesetekst.text];}
    if (ord1==8){self.lesetekst.text = [NSString stringWithFormat:@"%@ hverandre", _lesetekst.text];}
    if (ord1==9){self.lesetekst.text = [NSString stringWithFormat:@"%@ hver", _lesetekst.text];}
    if (ord1==10){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvert", _lesetekst.text];}
}
Alt de gjør er altså å sette et bestemt ord inn i en label. De ser vel like dumme ut disse listene?
Okay, da var det som jeg tenkte. Den enkleste måten jeg ser for meg du kan gjøre dette på er å bruke en int som sender i void funksjonen din.

Kode

for (int i = 0; i<8; i++) {
     [self skrivFraListe:i];
}

- (void) skrivFraListe:(int *)sender {
    if (sender==1){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvis", _lesetekst.text];}
    if (sender==2){self.lesetekst.text = [NSString stringWithFormat:@"%@ hva", _lesetekst.text];}
    if (sender==3){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvor", _lesetekst.text];}
    if (sender==4){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvem", _lesetekst.text];}
    if (sender==5){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvorfor", _lesetekst.text];}
    if (sender==6){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvordan", _lesetekst.text];}
    if (sender==7){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvilken", _lesetekst.text];}
    if (sender==8){self.lesetekst.text = [NSString stringWithFormat:@"%@ hverandre", _lesetekst.text];}
    if (sender==9){self.lesetekst.text = [NSString stringWithFormat:@"%@ hver", _lesetekst.text];}
    if (sender==10){self.lesetekst.text = [NSString stringWithFormat:@"%@ hvert", _lesetekst.text];}
}
Dette er pseudo kode som jeg har skrevet uten å ha kjørt den, men i teorien skal den funke. Om det er noe du ikke skjønner med den så er det bare å spørre
Sist endret av Proggy; 18. januar 2014 kl. 14:00.
Takk, da spør jeg: hvordan kan jeg skrive hele koden i mitt startinnlegg på en eller to linjer. Får jeg et godt svar på det, vil det ha stor overføringsverdi til mye annet jeg skriver. Jeg har en uvane med å skrive unødvendig mye koding, antar jeg.

for (int i = 0; i<8; i++) {
[self skrivFraListe:i];
}

Dette vil vel gi skriving fra alle lister fra 0 til 7? Det er ikke meningen. "ordliste" er en integer som styrer hvilken liste som skal velges.
Sist endret av hinsidige; 18. januar 2014 kl. 20:06.
Du bør lære deg litt flere datastrukturer. Todimensjonale tabeller og hashset (dictionary) er noen som kan benyttes til dette spesifikke problemet. Jeg har dessverre null peiling på objective-c, men det eksisterer garantert noe i rammeverket for dette.
Beklager, da har jeg vært litt kjapp til å skrive kode i stedet for å lese hva du skrev godt nok. Uansett, problemet lar seg lett løse ved å kun legge til et if statement som sjekker om ord er lik integeren "i" i loopen. Loopen vil kun la koden i SkrivFraListe kjøre om ord er lik i. Var dette et godt nok svar?

Kode

for (int i = 0; i<8; i++) {
if (ord == i) {
     [self skrivFraListe:i];
}
}
Sist endret av Proggy; 18. januar 2014 kl. 21:44.
Ser logisk ut, skjønner koden, men Xcode godtar ikke

[self skrivFraListe:i];

Kanskje akkurat denne linjen må skrives på en annen måte?
Beklager, jeg er kanskje litt sent ute med svar. Jeg må nesten vite nøyaktig hva feilmeldingen er før jeg kan gi deg et konkret råd. Noe jeg i alle fall oppdaget i koden nå var at pointern ved int ikke skal være der, så instansmetoden blir med andre ord slik:

Kode

- (void) skrivFraListe:(int)sender
Sist endret av Proggy; 23. januar 2014 kl. 21:46.
Hei igjen,

feilmeldingen er at han ikke finner metoden "skrivFraListe:"

Men pytt pytt, koden min virker, prøver bare å utvide horisonten når jeg regner med at det finnes enklere løsninger…
Takk for forsøkene.