mobile apps con objective-c (ios 3.1+) - day 02/02
DESCRIPTION
Technical speech per objectivec e ios versione 3.1. Argomenti trattati: ~ interfacce grafiche ~ eventi ~ Foundation.framework ~ persistenza dati ~ librerie ~ esempi Source code / esempi: https://github.com/elpskTRANSCRIPT
![Page 2: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/2.jpg)
contents | day 02
interfacce grafiche eventi Foundation.framework persistenza dati librerie
Mobile Apps con Objective-c | alberto pasca
![Page 3: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/3.jpg)
interfacce grafiche (.xib)Mobile Apps con Objective-c |
alberto pasca
UIWindow
UIView
UIButton
UILabel
UITextField
[…]
UIProgressBar
![Page 4: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/4.jpg)
IBAction & IBOutletMobile Apps con Objective-c |
alberto pasca
@interface ViewController : UIViewController { IBOutlet UIButton *FirstButton;}
@property (nonatomic, retain) UIButton *FirstButton;
- (IBAction) ButtonTouched:(id)sender;
@end
![Page 5: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/5.jpg)
controllersMobile Apps con Objective-c |
alberto pasca
NavigationController
Tab BarController
TableViewController
![Page 6: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/6.jpg)
Cosa vedremo…
• IBAction• IBOutlet
• UINavigationController• UITabBar• UITableView
Lezione_05_controllers
controllers – codeMobile Apps con Objective-c |
alberto pasca
![Page 7: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/7.jpg)
UIView – frame / boundsMobile Apps con Objective-c |
alberto pasca
UIKit vs CoreGraphics
![Page 8: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/8.jpg)
UIView - creazioneMobile Apps con Objective-c |
alberto pasca
UIView *v = [[UIView alloc] initWithFrame:f];[self.view addSubview:v];[v release];
- (void)drawRect;
v3
v2 v1
v4
• Aggiunte• Rimosse• Spostate di z-index• Trovate con i TAG• Animate• Riconoscono eventi muti-touch
![Page 9: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/9.jpg)
UIView – gerarchia
NSObject
NSArray NSString UIResponder
UIView
UIControl
UITextField UISlider
UILabel
Mobile Apps con Objective-c | alberto pasca
![Page 10: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/10.jpg)
UIView – touchMobile Apps con Objective-c |
alberto pasca
- (void) touchesBegan;- (void) touchesMoved;- (void) touchesEnded;- (void) touchesCancelled;
Eventi touch generici
Eventi touch particolari
UITapGestureRecognizer
UIPinchGestureRecognizerUIRotationGestureRecognizer
UISwipeGestureRecognizerUIPanGestureRecognizer
UILongPressGestureRecognizer
iOS 3.2+ -> UIGestureRecognizer
iPad 11 dita insieme
![Page 11: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/11.jpg)
UIView – animazioniMobile Apps con Objective-c |
alberto pasca
{[UIView beginAnimations:@”MyAnimation" context:nil];
[UIView setAnimationDelegate:self];[UIView setAnimationWillStartSelector:@selector(AnimStarted)];[UIView setAnimationDidStopSelector:@selector(AnimStopped)];
[UIView setAnimationBeginsFromCurrentState:YES];[UIView setAnimationDuration:2.0];[...][UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
MyView.alpha = .0;MyBeautifulButton.z = 100;// move// bounce// [...]
[UIView commitAnimations];}
![Page 12: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/12.jpg)
Cosa vedremo…
• UIView• Aggiunta / Rimozione• z-Index• Colori, dimensioni,
etc…
• Eventi Touch base• Eventi
UIGestureResponder• Animazioni semplici
Lezione_06_AnimazioniLezione_07_Touch
touch e animazioni – codeMobile Apps con Objective-c |
alberto pasca
![Page 13: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/13.jpg)
UITableViewMobile Apps con Objective-c |
alberto pasca
• Data Source (Array)
• ProtocolliUITableViewDataSource
UITableViewDelegate
![Page 14: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/14.jpg)
UITableViewCellMobile Apps con Objective-c |
alberto pasca
UITableViewCellStyleDefault
UITableViewCellStyleSubtitle
UITableViewCellStyleValue1
UITableViewCellStyleValue2
![Page 15: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/15.jpg)
UIButtonMobile Apps con Objective-c |
alberto pasca
- (IBAction) ButtonTouched:(id)sender { UIButton *btn = (UIButton*)sender; switch (btn.tag) { // quale button? case 0: break; case 1: break; case 2: break; // [...] }}
TIPI
CONFIG
(UIButton*)sender
![Page 16: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/16.jpg)
UITextField – UITextViewMobile Apps con Objective-c |
alberto pasca
Protocolli UITextFieldDelegateUITextViewDelegate
• ShouldBeginEditing• DidBeginEditing• ShouldEndEditing• DidEndEditing• ShouldClear• ShouldReturn
[textField becomeFirstResponder];[textField resignFirstResponder];
![Page 17: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/17.jpg)
UISwitchMobile Apps con Objective-c |
alberto pasca
UISwitch *sw = [[UISwitch alloc] initWithFrame:CGRectMake(0, 0, 50, 100)];
sw.on = NO;
sw.on = YES;
X, Y, W, H
CGRect rect; rect.origin.x = 0; rect.origin.y = 0; rect.size.width = 50; rect.size.height = 100;
![Page 18: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/18.jpg)
UIImageViewMobile Apps con Objective-c |
alberto pasca
[ImgView setImage: [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: @"http://tinyurl.com/cr2tmu6" ] ] ] ];
![Page 19: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/19.jpg)
UIWebBrowserMobile Apps con Objective-c |
alberto pasca
Protocollo UIWebViewDelegate
webViewDidStartLoadwebViewDidFinishLoaddidFailLoadWithErrorshouldStartLoadWithRequest
[WebView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: textField.text]]];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
![Page 20: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/20.jpg)
Cosa vedremo…
• UITextField• UITextView• UILabel• UIButton• UISwitch• UISlider• UIImageView• UIWebBrowser
• Interazione codice
Lezione_08_Componenti
componenti – codeMobile Apps con Objective-c |
alberto pasca
![Page 21: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/21.jpg)
eventi
Mobile Apps con Objective-c | alberto pasca
![Page 22: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/22.jpg)
eventi - NSNotificationMobile Apps con Objective-c |
alberto pasca
creazione[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveTestNotification:) name:@"completato” object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@”completato" object:nil];
utilizzo
[[NSNotificationCenter defaultCenter] removeObserver:self];
distruzione
![Page 23: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/23.jpg)
eventi - gps
CoreLocation (CL) Framework Protocollo <CLLocationManagerDelegate>
- didUpdateToLocation
- didFailWithError
[[CLLocationManager alloc] init];
CLLocationCoordinate2D coords =
CLLocationCoordinate2DMake(45.50316, 9.16447);
Mobile Apps con Objective-c | alberto pasca
![Page 24: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/24.jpg)
Cosa vedremo…
• Posizione GPS• Bussola
Lezione_09_GPS
gps / bussola – codeMobile Apps con Objective-c |
alberto pasca
![Page 25: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/25.jpg)
eventi - accelerometroMobile Apps con Objective-c |
alberto pasca
CoreLocation (CL) Framework Protocollo <UIAccelerometerDelegate>
- didAccelerate
UIAcceleration: x, y, z
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:.2];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
![Page 26: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/26.jpg)
eventi - rotazione
- (BOOL) shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation
{
// UIInterfaceOrientationPortrait
// UIInterfaceOrientationLandscapeLeft
// UIInterfaceOrientationLandscapeRight
// UIInterfaceOrientationPortraitUpsideDown
}
Mobile Apps con Objective-c | alberto pasca
![Page 27: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/27.jpg)
eventi - UIApplicationDelegate
Mobile Apps con Objective-c | alberto pasca
< UIApplicationDelegate >
• didFinishLaunchingWithOptions
Cambiamenti di stato• Da attivo a inattivo
applicationWillResignActive
• Da attivo a backgroundapplicationDidEnterBackground
• Da background a inattivoapplicationWillEnterForeground
• Da inattivo ad attivoapplicationDidBecomeActive
• Da attivo a “sta per terminare”applicationWillTerminate
Chiamata / SMS
Quit
REopen
Sveglia
Quit
![Page 28: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/28.jpg)
Cosa vedremo…
• UIApplicationDelegate• Giroscopio• Accelerometro• Device Motion• Magnetometro• Shake
Lezione_10_Accelerometro
movimenti – codeMobile Apps con Objective-c |
alberto pasca
![Page 29: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/29.jpg)
FoundationFramework
Mobile Apps con Objective-c | alberto pasca
![Page 30: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/30.jpg)
Foundation – NSString vs NSMutableString
Lunghezza: length
Ricerca: rangeOfString
Sostituzione: replaceCharactersInRange:withString
Inserimento caratteri: insertString:atIndex:
Comparazione: isEqualToString
Prefissi / Suffissi: hasPrefix, hasSuffix
Conversioni: intValue, doubleValue, UTF8String
NSRange, NSMakeRange, NSNotFound
Mobile Apps con Objective-c | alberto pasca
![Page 31: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/31.jpg)
Foundation - NSNumberMobile Apps con Objective-c |
alberto pasca
char, short int, int, long int, long long int, float, double, BOOL
Utilizzare tipi scalari come oggetti
+ numberWithBool:+ numberWithChar:+ numberWithDouble:+ numberWithFloat:+ numberWithInt:+ numberWithInteger:+ numberWithLong:+ numberWithLongLong:+ numberWithShort:+ numberWithUnsignedChar:+ numberWithUnsignedInt:+ numberWithUnsignedInteger:+ numberWithUnsignedLong:+ numberWithUnsignedLongLong:+ numberWithUnsignedShort:
– boolValue– charValue– decimalValue– doubleValue– floatValue– intValue– integerValue– longLongValue– longValue– shortValue– unsignedCharValue– unsignedIntegerValue– unsignedIntValue– unsignedLongLongValue– unsignedLongValue– unsignedShortValue
ACCESSOCREAZIONE
![Page 32: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/32.jpg)
Foundation - NSArray
elementi SOLO alla creazione
sola lettura
elementi in creazione elementi in esecuzione lettura / scrittura shift automatico elementi
NSArray NSMutableArray
Mobile Apps con Objective-c | alberto pasca
NSArray *nomeArray = [NSArray arrayWithObjects:@"A",@"B",@"C",nil];
NSMutableArray *nomeMutableArray = [NSMutableArray arrayWithObjects:@"A",@"B",@"C",nil]; [nomeMutableArray addObject:@"D"]; [nomeMutableArray insertObject:@"Z" atIndex:0]; NSLog(@"%@", [nomeArray objectAtIndex:0]); NSLog(@"%@", [nomeMutableArray objectAtIndex:0]);
![Page 33: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/33.jpg)
Foundation - NSDictionaryMobile Apps con Objective-c |
alberto pasca
elementi SOLO alla creazione
sola lettura
elementi in creazione elementi in esecuzione lettura / scrittura
NSDictionary NSMutableDictionary
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"VAL_00", @"KEY_00", @"VAL_01", @"KEY_01", nil]; NSMutableDictionary *mutDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"VAL_00", @"KEY_00", @"VAL_01", @"KEY_01", nil]; [mutDict setValue:@"VAL_99" forKey:@"KEY_00"];[mutDict setObject:@"VAL_02" forKey:@"KEY_02"]; NSLog(@"%@", [dict objectForKey:@"KEY_00"]); // valueForKeyNSLog(@"%@", [mutDict objectForKey:@"KEY_00"]); // valueForKey
![Page 34: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/34.jpg)
Cosa vedremo…
• NSString• NSMutableString• NSNumber• NSArray• NSMutableArray• NSDictionary• NSMutableDictionary
Lezione_11_Foundation
Foundation.framework – code
Mobile Apps con Objective-c | alberto pasca
![Page 35: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/35.jpg)
persistenza dati
Mobile Apps con Objective-c | alberto pasca
![Page 36: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/36.jpg)
persistenza – NSUserDefault
“database” locale (area riservata) thread safe
NSString *sessionKey = @"865eft8itg98sdf3”;
NSUserDefaults *store = [NSUserDefaults standardUserDefaults];
[store setObject:sessionKey forKey:@"SESSION"];
NSUserDefaults *get = [NSUserDefaults standardUserDefaults];
NSString *data = [get stringForKey:@"SESSION"];
NSLog(@"DATA: %@", data);
Mobile Apps con Objective-c | alberto pasca
![Page 37: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/37.jpg)
persistenza – NSCoding
store in locale di CLASSI intere
<NSCoding> codifica / decodifica oggetti per l’archiviazione
Mobile Apps con Objective-c | alberto pasca
- (id) initWithCoder: (NSCoder *)decoder- (void) encodeWithCoder: (NSCoder *)coder
Recupero oggetti/valore: decoder -> decodeObjectForKeySalvataggio oggetti/valore: coder -> encodeObject
![Page 38: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/38.jpg)
persistenza – .plist e .bundle NSBundle
[[NSBundle mainBundle] pathForResource:@"Test” ofType:@"plist"];
== Test.plist
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>primo</key>
<string>001</string>
<key>secondo</key>
<string>Valore 2</string>
</dict>
</plist>
Mobile Apps con Objective-c | alberto pasca
![Page 39: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/39.jpg)
persistenza – Root.plist
Accesso ai SETTINGS del device Lettura / Scrittura con APP chiusa!
Mobile Apps con Objective-c | alberto pasca
![Page 40: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/40.jpg)
persistenza – SQLLite
Libreria libsqlite3.dylib
Funzionalità SQL, ma limitate SELECT INSERT DELETE etc…
Libreria in C, metodi in C
Editor come Terminale, Browser Plugin, IDE multipiattaforma
Mobile Apps con Objective-c | alberto pasca
![Page 41: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/41.jpg)
Cosa vedremo…
• NSUserDefault• NSCoding• File .PLIST• Setting sistema
• Conta esecuzioni app• Read/Write Settings• Salvataggio classi su
store
Lezione_12_Storage
persistenza – codeMobile Apps con Objective-c |
alberto pasca
![Page 42: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/42.jpg)
librerie & extras
Mobile Apps con Objective-c | alberto pasca
![Page 43: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/43.jpg)
MKMapKit
MKMapKit.framework
Mappe Foto Ibride
MKAnnotation Localizzazione GPS Polyline (no route!) Geocodifica
Mobile Apps con Objective-c | alberto pasca
![Page 44: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/44.jpg)
Network
NSURL NSURLRequest NSURLConnection
[[NSURLConnection alloc] initWithRequest:request delegate:self]
connectionDidFinishLoadingconnection didReceiveResponseconnection didReceiveDataconnection didFailWithError
Mobile Apps con Objective-c | alberto pasca
![Page 45: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/45.jpg)
NSXMLParser
<NSXMLParserDelegate>
Parsing XML Carattere per carattere! Callback per ogni evento
– parserDidStartDocument:
– parserDidEndDocument:– parser:parseErrorOccurred:
– parser:foundCharacters:
Mobile Apps con Objective-c | alberto pasca
PRO: 1. Integrato2. Velocissimo
CONTRO: 3. Complesso4. No XPATH !
![Page 46: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/46.jpg)
librerie – TBXML / XPathQuery OpenSource
TBXML Più veloce dopo NSXMLParser Accesso diretto ai nodi e attributi
XPathQuery (richiede la lib “libxml2.dlyb”) Navigazione con Xpath Recupero di tutti i nodi in un colpo solo
Mobile Apps con Objective-c | alberto pasca
http://goo.gl/Kr1Hk | http://goo.gl/Au6SV
![Page 47: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/47.jpg)
librerie - FMDB
Wrapper per SQLLite Scritto in Objective-C anziché in C Molto facile da usare
[FMDatabase databaseWithPath:dbPath]
FMResultSet *rs = [db executeQuery:
@"SELECT / INSERT / etc…"];
[rs close];
Mobile Apps con Objective-c | alberto pasca
http://goo.gl/szY0t
![Page 48: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/48.jpg)
extras – device infoMobile Apps con Objective-c |
alberto pasca
[[UIScreen mainScreen] bounds] [UIScreen mainScreen].brightness
[UIDevice currentDevice].model [UIDevice currentDevice].systemName [UIDevice currentDevice].systemVersion [UIDevice currentDevice].proximityMonitoringEnabled [UIDevice currentDevice].uniqueIdentifier [UIDevice currentDevice].orientation [UIDevice currentDevice].multitaskingSupported [UIDevice currentDevice].batteryLevel
Schermo
Device
![Page 49: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/49.jpg)
extras – Paint !
CoreGraphics.framework
> UIGraphicsBeginImageContext
> UIGraphicsEndImageContext
CGContextSetLineWidth CGContextSetRGBStrokeColor CGContextAddLineToPoint
Mobile Apps con Objective-c | alberto pasca
![Page 50: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/50.jpg)
extras – Musica !
#import <AVFoundation/AVFoundation.h>#import <AudioToolbox/AudioToolbox.h>
<AVAudioPlayerDelegate>
[AVAudioPlayer initWithContentsOfURL:url error:nil];AudioPlayer.numberOfLoops = 0;[AudioPlayer play];[AudioPlayer stop];
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
Mobile Apps con Objective-c | alberto pasca
Audio
Vibrazione
![Page 51: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/51.jpg)
Cosa vedremo…
• MKMapKit• Localizzazione GPS• MKAnnotation• MKMapType
• Connessione HTTP• Syncronous /
Asyncronous
• NSXmlParser• TBXML• XPathQuery
• Disegnare con le dita
Lezione_13_MapKitLezione_14_NetworkLezione_15_XMLParserLezione_16_Paint
extras – codeMobile Apps con Objective-c |
alberto pasca
![Page 52: Mobile APPs con Objective-C (iOS 3.1+) - Day 02/02](https://reader035.vdocuments.us/reader035/viewer/2022062705/5564af75d8b42a3e618b4786/html5/thumbnails/52.jpg)
# EOF - day 02.
alberto pasca – [email protected]
Codice e slide verranno inviate ai partecipanti.
grazie dell’attenzione.