Xcode leren

TheBigZ

TheBigZ op 15 april 2012 #

Je moet het niet (alleen) doorlezen, je moet er mee aan de slag gaan! De voorbeeldprogramma’s overtypen en aan de praat zien te krijgen. Dan kleine veranderingen gaan aanbrengen in het programma. Enzovoort.

Programmeren leer je door het te doen, en goed te kijken hoe anderen het doen.
Daarna komen de vragen, en ga je op zoek naar antwoorden, in de documentatie, op fora etc.

Dr. User

Dr. User op 15 april 2012 #

Ik wil dat ook wel graag, maar er staat dan wel: “Let’s run this program in Xcode now”

Dan is het hoofdstuk afgelopen en gaan ze verder in een nieuw hoofdstuk zonder dat wordt uitgelegd hoe ik het programma in Xcode uitvoer.

In welk bestand moet ik de code zetten etc.

TheBigZ

TheBigZ op 15 april 2012 #

Heb je alle stappen uit hoofdstuk 5 nagespeeld? Bij welke stap loop je vast?

Dr. User

Dr. User op 15 april 2012 #

Ik had hem nog niet helemaal doorgelezen.

Ik heb nu deze code:

<br />
#import <foundation/foundation.h></p>
<p>float circleArea(float theRadius);<br />
float rectangleArea(float width, float height);<br />
int main()<br />
{<br />
    float pictureWidth, pictureHeight, pictureSurfaceArea, circleRadius, circleSurfaceArea;<br />
    pictureWidth = 8.0;<br />
    pictureHeight = 4.5;<br />
    circleRadius = 5.0;<br />
    pictureSurfaceArea = rectangleArea (pictureHeight, pictureWidth);<br />
        [u]= [/u]circleArea(circleRadius);                    [u]Expected expression[/u]<br />
    NSLog(@"Area of circle: %10.2f.", circleSurfaceArea);<br />
    NSLog(@"Area of picture: %f.",pictureSurfaceArea);<br />
    return 0;<br />
}</p>
<p>float circleArea(float theRadius);<br />
[u]{[/u]                            [u]expected identifier or '('[/u]<br />
    float theArea;<br />
    theArea = 3.1416 * theRadius * theRadius;<br />
    return theArea;<br />
}</p>
<p>float rectangleArea(float width, float height;<br />
{<br />
    return width*height;<br />
}<br />
 

Wat klopt hier niet aan?

ik heb de fouten onderstreept en de error erachter gezet.

dit is een letterlijk overgenomen code uit het pdf-je, maar werkt niet…

TheBigZ

TheBigZ op 15 april 2012 #

Het komt nauw bij het coderen. Anders tikt de compiler je direct op de vingers. :smile:

Ik zie bijvoorbeeld al een sluithaakje ontbreken bij het prototype van rectangleArea onderaan.
Die puntkomma moet een sluithaakje zijn.
Verder dien je de puntkomma’s achter de protypes bij de definitie van de functie weg te laten:

<br />
float circleArea(float theRadius)<br />
{<br />
    float theArea;<br />
    theArea = 3.1416 * theRadius * theRadius;<br />
    return theArea;<br />
}<br />
float rectangleArea(float width, float height)<br />
{<br />
    return width*height;<br />
}<br />
 
Dr. User

Dr. User op 15 april 2012 #

ik zie net dat er iets mis is gegaan

ik had de code gekopieerd en dingen onderstreept.

hier is de echte code.

ik zal eens kijken of het met die tips wel werkt ;)

<br />
#import <foundation/foundation.h></p>
<p>float circleArea(float theRadius);<br />
float rectangleArea(float width, float height);<br />
int main()<br />
{<br />
    float pictureWidth, pictureHeight, pictureSurfaceArea, circleRadius, circleSurfaceArea;<br />
    pictureWidth = 8.0;<br />
    pictureHeight = 4.5;<br />
    circleRadius = 5.0;<br />
    pictureSurfaceArea = rectangleArea (pictureHeight, pictureWidth);<br />
        = circleArea(circleRadius);<br />
    NSLog(@"Area of circle: %10.2f.", circleSurfaceArea);<br />
    NSLog(@"Area of picture: %f.",pictureSurfaceArea);<br />
    return 0;<br />
}</p>
<p>float circleArea(float theRadius);<br />
{<br />
    float theArea;<br />
    theArea = 3.1416 * theRadius * theRadius;<br />
    return theArea;<br />
}</p>
<p>float rectangleArea(float width, float height;<br />
{<br />
    return width*height;<br />
}<br />
 
Dr. User

Dr. User op 15 april 2012 #

weer verkeerd…
waarom kan je op OMT berichten niet bewerken?

<br />
#import <foundation/foundation.h></p>
<p>float circleArea(float theRadius);<br />
float rectangleArea(float width, float height);<br />
int main()<br />
{<br />
    float pictureWidth, pictureHeight, pictureSurfaceArea, circleRadius, circleSurfaceArea;<br />
    pictureWidth = 8.0;<br />
    pictureHeight = 4.5;<br />
    circleRadius = 5.0;<br />
    pictureSurfaceArea = rectangleArea (pictureHeight, pictureWidth);<br />
        = circleArea(circleRadius);<br />
    NSLog(@"Area of circle: %10.2f.", circleSurfaceArea);<br />
    NSLog(@"Area of picture: %f.",pictureSurfaceArea);<br />
    return 0;<br />
}</p>
<p>float circleArea(float theRadius);<br />
{<br />
    float theArea;<br />
    theArea = 3.1416 * theRadius * theRadius;<br />
    return theArea;<br />
}</p>
<p>float rectangleArea(float width, float height;<br />
{<br />
    return width*height;<br />
}<br />
 
koen

koen op 15 april 2012 #

Niet jouw fout, OMT stopt die <p> er tussen, erg irritant, en ze verdommen het om te fixen.  

Ik zie nog een fout:

<br />
    = circleArea(circleRadius);<br />
 

moet zijn:

<br />
circleSurfaceArea  = circleArea(circleRadius);<br />
 

Hier trouwens nog een aantal links naar documentatie:  http://www.onemorething.nl/community/topic/gratis-cocoaobjcios-boeken-van-apple-in-ibooks

TheBigZ

TheBigZ op 15 april 2012 #

Het OMT forum heeft (al jaren) een bug in de “code” tag. Je kunt geen lege regels gebruiken. Erg suf, maar er wordt niks aan gedaan…  EDIT: Precies wat Koen zegt. :smile:

On topic, let goed op de details:

<br />
#import <foundation/foundation.h><br />
float circleArea(float theRadius);<br />
float rectangleArea(float width, float height);<br />
int main()<br />
{<br />
    float pictureWidth, pictureHeight, pictureSurfaceArea, circleRadius, circleSurfaceArea;<br />
    pictureWidth = 8.0;<br />
    pictureHeight = 4.5;<br />
    circleRadius = 5.0;<br />
    pictureSurfaceArea = rectangleArea (pictureHeight, pictureWidth);<br />
    circleSurfaceArea = circleArea(circleRadius);<br />
    NSLog(@"Area of circle: %10.2f.", circleSurfaceArea);<br />
    NSLog(@"Area of picture: %f.",pictureSurfaceArea);<br />
    return 0;<br />
}<br />
float circleArea(float theRadius)<br />
{<br />
    float theArea;<br />
    theArea = 3.1416 * theRadius * theRadius;<br />
    return theArea;<br />
}<br />
float rectangleArea(float width, float height)<br />
{<br />
    return width*height;<br />
}<br />
 
Dr. User

Dr. User op 05 mei 2012 #

Ik heb weer een vraagje mbt Xcode.
Ik mag (denk ik) hiervoor geen nieuw topic beginnen, dus doe het maar hier.

Ik heb deze (doe het op andere site aangezien OMT niet werkt) code, die heb ik in Xcode in main.m staan (Command line, foundation), maar ik krijg 2 errors:

Wat is de fout, en wat is hieraan te doen?

De code heb ik niet zelf gemaakt, maar komt uit een boek, dus zou moeten werken.
Misschien moet er iets verandert worden omdat het boek gebruik maakt van Xcode 3 i.p.v. 4?!

bedankt!

TheBigZ

TheBigZ op 05 mei 2012 #

Ik zou in ieder geval vermoeden dat die functie “circleArea” heet en niet “circleAreea”.

Dr. User

Dr. User op 05 mei 2012 #

dat heb ik inmiddels verandert, helpt niet

TheBigZ

TheBigZ op 05 mei 2012 #

Ik heb nu je code bekeken.
Daarin (regel 17) staat clicleArea. Dat klopt niet.
Nogmaals, bij programmeren moet je “op de kleintjes” letten.:lol:

Dr. User

Dr. User op 05 mei 2012 #

nu werkt het wel, bedankt!

Ik ga weer verder, ik moet daar echt beter op letten ja ;)

Dr. User

Dr. User op 06 mei 2012 #

int x;
for (x = 1; x <= 10; x++)
{
   NSLog(@”Julia is my favourite actress.”);
}
NSLog(@”The value of x is %d”, x);

Deze code snap ik:

x=1
x = lager of gelijk aan 10
x++ betekent dat er 1 bij op wordt geteld,

Maar waarom betekent x++ dat?
Waarom staat er niet gewoon x+1?
Als er x+++ zou staan, zou dat betekenen x+2?

x++ wordt helaas niet goed uitgelegd, in elk geval niet op een manier die ik echt snap.

TheBigZ

TheBigZ op 06 mei 2012 #

x++ is een verkorte notatie voor: x = x + 1
Hoog x met 1 op.

Als je x op dezelfde manier met twee wilt ophogen, wordt dat zoiets: (x++)++
maar deze notatie kom je niet zo vaak tegen.

Een andere verkorte schrijfwijze is: x += 1

Die is wel makkelijk te gebruiken met andere ophogingen: x += 2

Dr. User

Dr. User op 06 mei 2012 #

oke, en hier alweer een vraag:

“Next, select the Identity button in the Inspector palette (Cmd-6), then choose MAFoo from the Class pop-up menu.”
Hoe moet dit in Xcode 4? volgens mij zijn de sneltoetsen ook erg veranderd!

koen

koen op 07 mei 2012 #

Option-Command-1

koen

koen op 07 mei 2012 #

Zie ook hier: http://pragmaticstudio.com/media/Xcode4Shortcuts.pdf

Dr. User

Dr. User op 07 mei 2012 #

Bedankt! (bijna) precies wat ik zocht.
Die tutorial gaat namelijk over Xcode 3, ik zal dus even kijken of er ook zo’n lijst voor Xcode 3 is, om te vergelijken ;)
Ik ken namelijk nog niet alles, dus als zij zeggen cmd+shift+6 bijv. dan kan ik bij de naam kijken en dan bij Xcode 4 kijken…

W0utR

W0utR op 08 mei 2012 #

Kent er iemand een paar degelijke XML parsers, de standaard (NSXMLParser) vind ik persoonlijk nogal raar opgebouwd.

Hij loopt door je XML op een vrij rare manier

koen

koen op 08 mei 2012 #

Hier staan er een paar op een rijtje: http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project

W0utR

W0utR op 08 mei 2012 #

Thanks, had later ontdekt dat de web interface gelukkig ook JSON kon terug sturen, wat het al een pak makkelijker maakte.

Het ging even de mist in omdat ik verschillende request naar een singleton model stuurde, natuurlijk niet aan gedacht dat alles dan door elkaar zou lopen, heb het voorlopig opgelost met een soort van wachtrij te maken, maar niet zeker of dit een correcte oplossing is.

Dr. User

Dr. User op 13 mei 2012 #

Hallo,
Ik heb weer eens een aantal vraagjes over Xcode, maar het wordt wat teveel om hier uit te leggen, dus ik vroeg me af of er iemand is die me even wil helpen met iChat/iMessage?

alvast bedankt

Willemien

Willemien op 14 mei 2012 #

Maakt het wat uit of je het aan één iemand uitlegt of aan ons allemaal?
Als de vraag niet gaat over “Hoe leer ik Xcode/Objective-C/Cocoa/programmeren” en niet een vervolg is op een eerdere vraag dan mag je er best een apart topic van maken. Het valt dan (met een goede titel) meer op en is later beter terug te vinden als iemand anders net zo’n probleem heeft.

Ni3l55

Ni3l55 op 12 augustus 2012 #

Ik ben sinds kort nieuw bij de taal Objective-C, Ik heb een PDF-Boek om Objective-C te snappen ik heb een project gestart voor “Hello world” en daarmee heb ik het project “command Line Tool”
er staat standaard dit:


//
//  main.c
//  Hello
//
//  Created by Niels on 12-08-12.
//  Copyright (c) 2012 Niels. All rights reserved.
//

#include <stdio.h>

int main(int argc, const char * argv[])
{

   // insert code here…
   printf(“Hello, World!\n”);
   return 0;
}

in het boek moet ik er dit zetten:

#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]
init];
// insert code here… NSLog(@”Hello, World!”); [pool drain];
return 0;
}

ik heb de groene zinnen laten staan en #include <stdio.h> vervangen door: #import <Foundation/Foundation.h>

Maar helaas kreeg ik toen ik op Run klikte 19erorrs.

Ni3l55

Ni3l55 op 12 augustus 2012 #

Niemand?

AppleStef

AppleStef op 12 augustus 2012 #

Geduld is een schone deugd… :wink:

Ni3l55

Ni3l55 op 12 augustus 2012 #

je hebt gelijk:sarcastic:

Willemien

Willemien op 12 augustus 2012 #

Command line tools zijn er in verschillende types. Ik denk dat je type Foundation moet nemen. Wat staat er in je boek?

Over dit topic

Gestart op 20 januari 2012 door 2eSteve

Laatste reactie door Dr. User

Je kunt alleen reageren met een gratis OMT account.
Log in.

Inloggen