Object-c / iOS: об использовании NSUserDefaults установить серийные номера / пароль - PullRequest
0 голосов
/ 08 декабря 2010

У меня много проблем с настройкой sn / pwd

Поскольку первые данные по умолчанию взяты с URL

, они получили следующие данные:

{
   serial_number=1234;
   password = 7777;
}

Приложениезакончите запуск, он загрузит с URL через код, подобный этому

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

Сначала я пытаюсь создать plist-данные в iphone:

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

Чем я сравниваю с информациейЯ получаю

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
}

Но я обнаружил NSUserDefaults, может ли он работать так же, как?

Я имею в виду работу одинаково, могу ли я записать серийный номер и пароль в свой iphone???

Как лучше всего записать серийный номер / пароль пользователя в iphone?

1 Ответ

3 голосов
/ 08 декабря 2010

Если вы храните пароль, ни NSUserDefaults, ни сериализация данных в NSDocumentDirectory не являются отличным решением, потому что данные хранятся с небольшой защитой.iOS предоставляет механизм KeyChain для этой цели.Он предоставляет немного неясные интерфейсы C, но Buzz Andersen получил хороший Objective-C интерфейс , который называется SFHFKeychainUtils.С SFHFKeychainUtils вы можете сделать что-то вроде:

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

И это безопасно хранится в цепочке для ключей.Чтобы восстановить пароль:

NSString *pw = [SFHFKeychainUtils getPasswordForUsername:user.text andServiceName:@"my_service" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...