2010-12-08 56 views
0

j'ai eu beaucoup de questions au sujet de la mise sn/passwdObject-c/iOS: A propos de l'utilisation NSUserDefaults définir les numéros de série/mot de passe

Parce que les premières données par défaut est d'URL

a obtenu des données plist comme celui-ci:

{ 
    serial_number=1234; 
    password = 7777; 
} 

la finition application lancée, il va télécharger depuis l'URL via le code comme celui-ci

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]; 

Au début, je tente de créer un ensemble de données plist dans iphone:

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

Que je compare avec les informations que j'obtenir

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 
} 

Mais j'ai trouvé NSUserDefaults, peut-il travailler la même chose?

Je veux dire travailler de la même manière est-ce que je peux enregistrer un numéro de série et un mot de passe dans mon iphone ???

Quelle est la meilleure façon d'enregistrer un numéro de série/mot de passe utilisateur dans l'iPhone?

Répondre

3

Si vous êtes un mot de passe de stockage, NSUserDefaults et la sérialisation des données dans NSDocumentDirectory ne sont pas des solutions géniales car les données sont stockées avec peu de protection. iOS fournit le mécanisme KeyChain pour ce porupose. Il fournit des interfaces C qui sont un peu obscures, mais un Buzz Andersen a obtenu un joli Objective-C interface appelé SFHFKeychainUtils. Avec SFHFKeychainUtils vous pouvez faire quelque chose comme:

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

Et qui est stocké en toute sécurité dans le trousseau. Pour récupérer le mot de passe:

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