转自:http://blog.csdn.net/huang2009303513/article/details/41309043
 
hone中在本地存储数据简单的说有三种方式:数据库、NSUserDefaults和文件。

NSUserDefaults用于存储数据量小的数据,例如用户配置。并不是所有的东西都能往里放的,只支持:NSString,NSNumber, NSDate, NSArray, NSDictionary,详细方法可以查看类文件。

NSUserDefaultsstandardUserDefaults用来记录一下永久保留的数据非常方便,不需要读写文件,而是保留到一个 NSDictionary字典里,由系统保存到文件里,系统会保存到该应用下的/Library/Preferences /gongcheng.plist文件中。需要注意的是如果程序意外退出,NSUserDefaultsstandardUserDefaults数据不 会被系统写入到该文件,不过可以使用[[NSUserDefaultsstandardUserDefaults] synchronize]命令直接同步到文件里,来避免数据的丢失。
 

一、将数据存储到NSUserDefaults:

//UISwitch
- (IBAction)switchChanged:(id)sender{
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setBool:_theSwitch.on forKey:@"switchValue"];
}

//UITextField
- (IBAction)inputChanged:(id)sender{
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setObject:_textField.text forKey:@"inputValue"];
}

二、读取NSUserDefaults中的数据:

//UISwitch
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
BOOL sw = [userDefaults boolForKey:@"switchValue"];
[_theSwitch setOn:sw];

//UITextField
NSString *str = [userDefaults stringForKey:@"inputValue"];
[_textField setText:str];

 
registerDefaults:方法是注册偏好设置的子集,它是不写入到plist文件中的,但在ND中取确实能取到。
也就是说plist文件中看到的数据是你显示的设置进去的。
比如调用setxxx方法
 

异步请求:

 

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. -(BOOL)getOnlyKey1  
  2. {  
  3.     NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString];  
  4.       
  5.     __block bool isTrue = false;  
  6.       
  7.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  8.     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];  
  9.     NSString *urlstr = [NSString stringWithFormat:@"http://122.225.89.70:28080/try/check"];  
  10.     NSURL *url = [NSURL URLWithString:urlstr];  
  11.     NSDictionary *dic = @{@"imei":myUUIDStr,@"av":AppVersion};  
  12.     [manager POST:urlstr parameters:dic success:^(AFHTTPRequestOperation *operation, id responseObject) {  
  13.         MyLog(@"%@", operation.responseString);  
  14.         NSRange range = [operation.responseString rangeOfString:@"\"msg\":\"0\""];  
  15.         if (range.location != NSNotFound) {  
  16.             isTrue = true;  
  17.         }  
  18.         if (!isTrue) {  
  19.             SHOWALERT(@"错误", @"您需要联系开发人员");  
  20.         }  
  21.           
  22.     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
  23.         MyLog(@"返回失败结果:%@", error.localizedFailureReason);  
  24.         SHOWALERT(@"错误", @"请求开发人员服务器失败");  
  25.         isTrue = true;  
  26.     }];  
  27.     return  isTrue;  
  28. }  
同步请求:

 

 

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. -(BOOL)getOnlyKey2  
  2. {  
  3.     NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString];  
  4.     BOOL isTrue = false;  
  5.     NSString *urlstr = [NSString stringWithFormat:@"http://122.225.89.70:28080/try/check"];  
  6.     NSURL *url = [NSURL URLWithString:urlstr];  
  7.     NSMutableURLRequest *urlrequest = [[NSMutableURLRequest alloc]initWithURL:url];  
  8.     urlrequest.HTTPMethod = @"POST";  
  9.     NSString *bodyStr = [NSString stringWithFormat:@"imei=%@&av=%@",myUUIDStr, AppVersion];  
  10.     NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];  
  11.     urlrequest.HTTPBody = body;  
  12.     AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlrequest];  
  13.     requestOperation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];  
  14.     [requestOperation start];  
  15.     [requestOperation waitUntilFinished];  
  16.     MyLog(@"%@",requestOperation.responseString);  
  17.     NSRange range = [requestOperation.responseString rangeOfString:@"\"msg\":\"0\""];  
  18.     if (range.location != NSNotFound) {  
  19.         isTrue = true;  
  20.     }  
  21.     if (!isTrue) {  
  22.         SHOWALERT(@"错误", @"您需要联系开发人员");  
  23.     }  
  24.     return  isTrue;  
  25. }  
原生态的同步请求:

 

 

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
 
    1. -(BOOL)getOnlyKey  
    2. {  
    3.     NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString];  
    4.       
    5.     //应用版本号  
    6.     NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];  
    7.     NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"];  
    8.       
    9.       
    10.     NSString *urlString = [NSString stringWithFormat:@"http://122.225.89.70:28080/try/check"];  
    11.     NSURL *url = [NSURL URLWithString:urlString];  
    12.       
    13.     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];  
    14.       
    15.     [request setHTTPMethod:@"POST"];  
    16.     NSString *bodyStr = [NSString stringWithFormat:@"imei=%@&av=%@",myUUIDStr, versionNum];  
    17.     //将nstring转换成nsdata  
    18.     NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];  
    19.     //MyLog(@"body data %@", body);  
    20.     [request setHTTPBody:body];  
    21.     NSURLResponse *response = nil;  
    22.     NSError *error = nil;  
    23.     //第二,三个参数是指针的指针,所有要用取址符,这个方法是同步方法。同步操作没有完成,后面的代码不会执行。  
    24.     NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];  
    25.       
    26.     //    NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];  
    27.     //    MyLog(@"返回结果是:%@", str);  
    28.       
    29.     if (error == nil) {  //接受到数据,表示工作正常  
    30.         NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];  
    31.         MyLog(@"%@",str);  
    32.         NSRange range = [str rangeOfString:@"\"msg\":\"0\""];  
    33.         if (range.location != NSNotFound) {  
    34.             return true;  
    35.         }else{  
    36.             return false;  
    37.             UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"出错鸟"  
    38.                                                             message:@"您需要联系项目开发人员"  
    39.                                                            delegate:nil  
    40.                                                   cancelButtonTitle:@"确定"  
    41.                                                   otherButtonTitles:nil];  
    42.             [alert show];  
    43.         }  
    44.     }  
    45.       
    46.     if(error != nil || response == nil)  
    47.     {  
    48.         return false;  
    49.         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"错误"  
    50.                                                         message:@"登陆失败,网络不稳定"  
    51.                                                        delegate:nil  
    52.                                               cancelButtonTitle:@"确定"  
    53.                                               otherButtonTitles:nil];  
    54.         [alert show];  
    55.           
    56.           
    57.     }  
    58.       
    59.     return false;  
    60. }  
posted on 2015-11-21 16:52  sharkHZ  阅读(181)  评论(0编辑  收藏  举报