Objective-c 2.0 Esercizi

di il
2 risposte

Objective-c 2.0 Esercizi

Salve a tutti, sono nuovo nel forum e sto cercando di imparare l'Objective-C.
Premetto che sono autodidatta, ho delle basi del linguaggio C, ho letto questa guida "Diventare un Xcoder" e cerco molto su internet tutorial e guide per risolver problemi. Poi ho comprato un libro di Andrea Picchi "Objective-c 2.0 per iOS e OS X", e sto facendo i dovuti esercizi.
Il problema sta qui, che agli esercizi non sono associate le possibili soluzioni, o quanto meno delle dritte per poter arrivare all'esecuzione del programma.
Ho provato a chiedere le soluzioni direttamente su facebook , ma giustamente, in poche parole, mi dice che ci devo arrivare da solo.
Spero che qualcuno di voi possa aiutarmi a capire.
L'esercizio mi chiede questo: "Scrivere un programma che crea una rubrica (address book) basato sulla classe NSMutableArray. Scrivere almeno due metodi che permettano all'utente di modificare la rubrica"
Perché io l'ho fatto ma non ho usato un NSMutableArray come chiede l'esercizio, ondamentalmente non so nemmeno se "potrebbe" andar bene! quindi ve lo posto

#import <Foundation/Foundation.h>
typedef struct addressbook
{
    char nome[15];//Nome
    char cognome[20];//Cognome
    int numero;//Numero
}etichetta;

//---------@interface section ---------

@interface Rubrica : NSObject

{
    int i;
    int c;
    int x;
    int q; //Quanti
    char condizione;
}

-(void)quanti;
-(void)inserisci;
-(void)cancella;
-(void)stampa;

@end

//---------@implementation section ---------

#import <Foundation/Foundation.h>

@implementation Rubrica;

struct addressbook pink[20];

-(void)quanti
{
        NSLog(@"Quanti ne vuoi inserire?");
        scanf("%d", &q);
            if (q <= 0)                //Se il numero inserito è minore o uguale a 0 da errore
                {
                    NSLog(@"Il numero inserito è errato, riprova");
                    exit(0);
                }
}
-(void)inserisci

{
     NSLog(@"Inserisci %i numeri\n", q);
    
    for (i=0; i<q; i++)
    {
        c=i+1;                      //La variabile c parte da 0 ma io la voglio far partire da 1
        NSLog(@"Inserisci il %d nome", c);
        scanf("%s", pink[i].nome);
        NSLog(@"Inserisci il %d cognome", c);
        scanf("%s", pink[i].cognome);
        NSLog(@"Inserisci il %d numero", c);
        scanf("%d", &pink[i].numero);
    }
}

-(void)stampa
{
    condizione ='n';            //Dichiarare il char della condizione
    while (condizione=='n')     //Cilco while continua se viene digitato il carattere n a fine programma
    {
        NSLog(@"Vuoi stampare tutti i numeri? (y/n)");
         scanf("%s",&condizione);
        if (condizione=='n') {
            NSLog(@"Quale Numero vuoi stampare?");
            scanf("%d", &x);
            NSLog(@"Il numero che hai voluto stampare appartiene a: %s, %s, che ha il numero %d",pink[x-1].nome, pink[x-1].cognome, pink[x-1].numero );
        }
        else{
            NSLog(@"Stampa il tutti gli indirizzi");
           
            for (i=0; i<q; i++)
            {
                NSLog(@"Nome %s, Cognome %s, Numero %d", pink[i].nome, pink[i].cognome, pink[i].numero );
            }
        }
        
        printf("\nVuoi uscire? (y/n)\n");  //Domanda se vuoi usire dal progamma
        scanf("%s",&condizione);            //Condizione per uscire dal programma
    }                                       //Fine ciclo while
}
-(void)cancella
{
    //NON è STATO CREATO
}
@end

//---------@program section ---------

int main (int argc, const char * argv[]){
    @autoreleasepool {
        
        Rubrica *ruby = [[Rubrica alloc]init];

        [ruby quanti];
        [ruby inserisci];
        [ruby stampa];

    }
    return 0;
}
Premettendo che questo codice sia sbagliato e con errori vorrei rifarlo cercando di usare NSMutableArray.
Qualcuno sa darmi dei consigli? Grazie!
P.S. Devo usare una struct o posso farne a meno?, Visto che devo usare scanf per inserire i dati, posso usare NSvalue per contenere i dati primitivi che inserisco (es. nome, cognome, numero) per poi a sua volta inserirlo dentro ad un NSMutableArray?

2 Risposte

  • Re: Objective-c 2.0 Esercizi

    L' NSMutableArray è davvero banale da usare. Con il metodo addObject aggiungi elementi all'array, con il removeObject o removeAllObjects li rimuovi. Nulla di più semplice L' unica cosa è che stai usando dei char[], mentre gli NSArray vogliono degli oggetti (Nel tuo caso l' oggetto è NSString).
  • Re: Objective-c 2.0 Esercizi

    Grazie d0zer! Ho trovato il modo per trasformare i char[] e gli int in oggetti!
    NSLog(@"Inserisci il Nome");
           scanf("%s", nome);
           m1=[NSString stringWithCString:nome encoding:NSASCIIStringEncoding];
    NSLog(@"Inserisci il Numero Telefonico");
           scanf("%d", &numero);
           m3=[NSNumber numberWithInt:numero];
    
    Sento che manca poco alla soluzione del problema!
Devi accedere o registrarti per scrivere nel forum
2 risposte