Mattepuffo
Objective-C user preferences


Objective-C ci mette a disposizione una semplice classe attraverso la quale possiamo salvare le preferenze dell'utente nelle nostre app per iPhone e iPad: NSUserDefaults.

Usare questa classe è veramente semplice.

Prima di tutto dobbiamo istanziare l'oggetto:

NSUserDefaults userDefaults = [NSUserDefaults standardUserDefaults];

Poi possiamo facilmente leggere e scrivere all'interno con il classico meccanisco chiave:valore.

Mattepuffo
Usare un font personlizzato in iOS


Piccolo tip su come usare un font personalizzato una una nostra app per iOS.

Il font in questione può essere uno creato da voi o scaricato; rimane, comunque, che è un font esterno.

Prima di tutto inserite il font nel vostro progetto nella directory Font (se non c'è createla).

Come estensione del font ho usato ttf, e se non se altre estensioni sono supportate.

Mattepuffo
UIButton con angoli arrotondati


Di default XCODE ci mette a disposizione solo UIButton con angoli a punta (penso questo dipenda da iOS 7).

Non è detto che noi li vogliamo così, e magari li vogliamo con angoli tondi!

Bhe presto detto.

Una volta che abbiamo aggiunto il bottone alla StoryBoard, e aggiunto il riferimento al controller, non dobbiamo far altro che usare un oggetto CALayer.

Mattepuffo
Download file in Objective-C


Oggi vediamo come scaricare file dalla rete nella nostre app per iPad e iPhone usando gli strumenti standard offerti da iOS.

Partiamo del file di header del nostro controller:

@interface EntrateViewController : UIViewController {
    NSURLConnection *connection;
    NSURLRequest *request;
    NSURL *url;
    NSMutableData *dataResponse;
    NSArray *paths;
    NSString *documentsDirectory;
    NSString *lastEntrateFile;
}

@property (weak, nonatomic) IBOutlet UIBarButtonItem *btnRefresh;

- (IBAction)download:(id)sender;

@end

Abbiamo un UIBarButtonItem, al quale abbiamo collegato una IBAction.

Mattepuffo
Controllo della connessione in iPhone e iPad


Torniamo a parlare di Objective-C con un argomento abbastanza importante: il controllo della connessione.

Fino a iOS 6 non sono previsti strumenti integrati, ma Apple stessa ha messo a disposizione una classe che si chiama Reachability, che si può scaricare dal web; un esempio completo da qua.

Per questa classe bisogna disabilitare ARC se lo avete attivato; sennò in giro c'è anche una classe compatibile con ARC.

Una volta agguinta la classe al progetto, sviluppiamo una classe per usarla; io l'ho chiamata molto banalmente ControlloConnessione:

// ControlloConnessione.h

#import
#import "Reachability.h"

@interface ControlloConnessione : NSObject {
    Reachability *internet;
    Reachability *wifi;
}

- (BOOL)controllaConnessione;
- (BOOL)check: (Reachability *)curReach;

@end

Questo il file di implementazione:

// ControlloConnessione.m
#import "ControlloConnessione.h"

@implementation ControlloConnessione

- (BOOL)controllaConnessione {
    internet = [Reachability reachabilityForInternetConnection];
    wifi = [Reachability reachabilityForLocalWiFi];
    if ([self check:internet] || [self check:wifi]) {
        return YES;
    }
    return FALSE;
}

- (BOOL)check:(Reachability*)curReach{
    NetworkStatus netStatus = [curReach currentReachabilityStatus];
    switch (netStatus){
        case NotReachable:{
            return NO;
            break;
        }
        case ReachableViaWWAN:{
            return YES;
            break;
        }
        case ReachableViaWiFi:{
            return YES;
            break;
        }
    }
    return FALSE;
}

@end

Come vedete ci sono due metodi, di cui il primo sarà quello richiamato dove ci serve.