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?