2010-12-08 5 views
0

Ich habe viele Fragen über sn/PWDObject-c/iOS: Über die Verwendung NSUserDefaults gesetzt Seriennummern/Passwort

Einstellung Da die erste Standarddaten von URL ist

ein plist Daten wie diese bekommen:

{ 
    serial_number=1234; 
    password = 7777; 
} 

die Anwendung Ziel ins Leben gerufen, wird es von URL herunterladen über den Code wie folgt

NSString *urlString = [[NSString alloc]initWithString:@"http://getdefaults.php"]; 
NSArray *plistData; 
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURLURLWithString:urlString] 
          cachePolicy:NSURLRequestUseProtocolCachePolicy 
         timeoutInterval:60.0]; 
NSData *returnData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:nil error:nil]; 
NSString *listFile = [[NSString alloc] initWithData:returnDataencoding:NSUTF8StringEncoding]; 
[listFile dataUsingEncoding:NSUTF8StringEncoding]; 
plistData = [listFile propertyList]; 

Zuerst versuche ich eine plist Daten in iphone zu erstellen:

NSArray *localPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *localDocPath = [localPaths objectAtIndex:0]; 
NSString *localFilePath = [localDocPath stringByAppendingPathComponent:@"InputPassword.plist"]; 
NSMutableDictionary *localDictread = [[NSMutableDictionary alloc] initWithContentsOfFile:localFilePath]; 

, als ich mit den Informationen zu vergleichen, ich

if(localDictread==nil){ 
    //pop a textfield to let user enter the serial numbers and password 
    //if the text in the textfield is equal the default SN/PWD from plistData,write the sn/pwd to plist in iphone 
} 

bekommen Aber ich fand NSUserDefaults, kann es als die gleiche Arbeit?

Ich meine Arbeit als das gleiche ist, kann ich eine Seriennummer und ein Passwort in meinem iPhone aufzeichnen ???

Was ist der beste Weg, um eine Benutzer-Seriennummer/ein Passwort in iPhone aufzuzeichnen?

Antwort

3

Wenn Sie ein Kennwort speichern, sind weder NSUserDefaults noch die Serialisierung der Daten in NSDocumentDirectory großartige Lösungen, da Daten mit wenig Schutz gespeichert werden. iOS bietet den KeyChain Mechanismus für diese Porupose. Es bietet C-Schnittstellen, die ein wenig obskur sind, aber ein Buzz Andersen bekam eine nette Objective-C interface gehen namens SFHFKeychainUtils. Mit SFHFKeychainUtils können Sie etwas tun wie:

[SFHFKeychainUtils storeUsername:user.text andPassword:pass.text forServiceName:@"my_service" updateExisting:YES error:nil]; 

Und das wird sicher in den Schlüsselbund gespeichert. Um das Passwort wiederherzustellen:

NSString *pw = [SFHFKeychainUtils getPasswordForUsername:user.text andServiceName:@"my_service"