2012-03-07 70 views
2

我正在創建一個包含核心數據的項目。使用核心數據登錄ID和密碼iOS

現在我的第一個視圖是登錄/密碼在表視圖控制器。

只要用戶點擊完成,我希望我的應用程序將登錄名和密碼文本字段與實體登錄名(具有屬性:用戶名和密碼)進行比較,然後顯示另一個視圖以及與該用戶相關的信息(1到1)的關係。

任何人可以幫助我如何驗證登錄密碼,然後只顯示與該用戶相關的信息?

任何幫助將非常感激。我對此完全陌生。

回答

3

你需要針對實體創建一個取得請求(您將需要修改這個以滿足您的特定需求:

NSFetchRequest *request= [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Entity" inManagedObjectContext:context]; 
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"username==%@ AND password==%@",self.UsernameTextField.Text, self.PasswordTextField.Text]; 
[request setEntity:entity]; 
[request setPredicate:predicate]; 

...做任何你需要與結果(NSArray的)

+0

感謝您的輸入...你能告訴我該怎麼辦[熱曲est setEntity:entity]; [request setPredicate:predicate];意思???以及如何使用它們鏈接到目標視圖控制器? – user1253637 2012-03-07 03:20:53

+0

你現在要做的最好的事情是通過一些關於這個的教程。 Ray Wenderlich在基礎核心數據方面有一些很棒的,而iTunesU斯坦福大學的課程也非常好。你擁有的另一個選擇是支付培訓費用。在我看來,Lynda.com是一個很好的地方。 – 2012-03-07 10:00:14

0
// First view controller 
#import "ViewController.h" 
#import "ViewController6578.h" 
#import "AppDelegate.h" 
#import <CoreData/CoreData.h> 
@interface ViewController()<UITextFieldDelegate> 
{ 
    NSArray *user; 
} 
- (IBAction)btt_reg:(id)sender; 
@end 
@implementation ViewController 
- (NSManagedObjectContext *)managedObjectContext 
{ 
    NSManagedObjectContext *context = nil; 

    id delegate = [[UIApplication sharedApplication] delegate]; 

    if ([delegate performSelector:@selector(managedObjectContext)]) { 

     context = [delegate managedObjectContext]; 

    } 

    return context; 
} 

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    // Do any additional setup after loading the view, typically from a nib. 

} 



- (void)didReceiveMemoryWarning { 

    [super didReceiveMemoryWarning]; 

    // Dispose of any resources that can be recreated. 

} 

- (void)textFieldDidEndEditing:(UITextField *)textField 

{ 

// AppDelegate *appDelegate = 

//  [[UIApplication sharedApplication] delegate]; 
     NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 

    NSFetchRequest *request= [[NSFetchRequest alloc] init]; 

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"LogIn" inManagedObjectContext:managedObjectContext]; 

    [request setEntity:entity]; 

    NSPredicate *predicate =[NSPredicate predicateWithFormat:@"userName==%@",self.txt_user.text]; 

    [request setPredicate:predicate]; 

    NSManagedObject *manage = nil; 

    NSError *error; 

    user=[managedObjectContext executeFetchRequest:request error:&error]; 

    if([user count]==0) 
    { 

     NSLog(@"user and password"); 

    } 

    else 

    { 

     manage =user[0]; 

     _txt_pass.text = [manage valueForKey:@"password"]; 

    } 
} 

- (IBAction)btt_log:(id)sender { 

    if((_txt_user.text.length == 0) || (_txt_pass.text.length==0)) 

    { 

     NSLog(@"enter username and password"); 

    } 

    else{ 

     NSLog(@"%@,Login successfull",_txt_user.text); 

    } 
} 

- (IBAction)btt_reg:(id)sender { 
    ViewController6578 *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"ndot"]; 

    [self.navigationController pushViewController:vc2 animated:YES]; 

} 

@end 

//second view controller 

#import "ViewController6578.h" 

#import "AppDelegate.h" 

#import <CoreData/CoreData.h> 

@interface ViewController6578()<UITextFieldDelegate> 

@end 

@implementation ViewController6578 

- (NSManagedObjectContext *)managedObjectContext { 

    NSManagedObjectContext *context = nil; 

    id delegate = [[UIApplication sharedApplication] delegate]; 

    if ([delegate performSelector:@selector(managedObjectContext)]) { 

     context = [delegate managedObjectContext]; 

    } 

    return context; 

} 

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    // Do any additional setup after loading the view. 

} 

- (void)didReceiveMemoryWarning { 

    [super didReceiveMemoryWarning]; 

    // Dispose of any resources that can be recreated. 

} 

/* 

#pragma mark - Navigation 



// In a storyboard-based application, you will often want to do a little preparation before navigation 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    // Get the new view controller using [segue destinationViewController]. 

    // Pass the selected object to the new view controller. 

} 

*/ 

#pragma mark-delegate 

- (BOOL)textFieldShouldReturn:(UITextField *)textField 

{ 

    [textField becomeFirstResponder]; 

    if(textField == _txt_user) 

    { 

     [_txt_pass becomeFirstResponder]; 

    } 

    else if(textField == _txt_pass) 

    { 

     [_txt_email becomeFirstResponder]; 

    } 

    else if(textField == _txt_email) 

    { 

     [_txt_email becomeFirstResponder]; 

    } 

    else 

    { 

     [_txt_email resignFirstResponder]; 

    } 

    return YES;  

} 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

{ 

    if (textField == _txt_user) 

    { 

     NSString *user =[_txt_user.text stringByReplacingCharactersInRange:range withString:string]; 

     NSString *userRegex = @"^[A-Z0-9a-z]{6,10}$"; 

     NSPredicate *userTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", userRegex]; 

     if ([userTest evaluateWithObject:user] == YES) 

     { 

      _lbl1.text [email protected]""; 

     } 

     else{ 

      _lbl1.text [email protected]"not valid"; 

     } 

    } 

    if(textField ==_txt_pass) 

    { 

     NSString *pass =[_txt_pass.text stringByReplacingCharactersInRange:range withString:string]; 



     NSString *passRegex [email protected]"^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{8,16}$"; 

     NSPredicate *passTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passRegex]; 

     if ([passTest evaluateWithObject:pass] == YES) 

     { 

      _lbl2.text [email protected]""; 

     } 

     else{ 

      _lbl2.text [email protected]"not valid"; 

     } 
    } 

    if(textField ==_txt_email) 

    { 

     NSString *email =[_txt_email.text stringByReplacingCharactersInRange:range withString:string]; 

     NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,10}"; 

     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 

     if ([emailTest evaluateWithObject:email] == YES) 

     { 

      _lbl3.text [email protected]""; 

     } 

     else{ 

      _lbl3.text [email protected]"not valid"; 

     } 

    } 

    return YES; 

} 

- (IBAction)btt_save:(id)sender 

{ 

    if((_txt_user.text.length==0) || (_txt_pass.text.length==0) || (_txt_email.text.length==0)) 

    { 

     UIAlertController *alert =[UIAlertController alertControllerWithTitle:@"title" message:@"please enter user,password,email" preferredStyle:UIAlertViewStyleDefault]; 

     UIAlertAction* yesButton = [UIAlertAction 

            actionWithTitle:@"Yes, please" 

            style:UIAlertActionStyleDefault 

            handler:^(UIAlertAction * action) 

            { 
            }]; 

     UIAlertAction* cancelButton = [UIAlertAction 

             actionWithTitle:@"No, thanks" 

             style:UIAlertActionStyleDefault 

             handler:^(UIAlertAction * action) 

             { 

             }]; 

     [alert addAction:yesButton]; 

     [alert addAction:cancelButton]; 

     [self presentViewController:alert animated:yesButton completion:nil]; 

    } 

    else 

    { 


    NSManagedObjectContext *context = [self managedObjectContext]; 

    // Create a new managed object 

    NSManagedObject *details = [NSEntityDescription insertNewObjectForEntityForName:@"LogIn" inManagedObjectContext:context]; 

    [details setValue:self.txt_user.text forKey:@"userName"]; 

    [details setValue:self.txt_pass.text forKey:@"password"]; 

    [details setValue:self.txt_email.text forKey:@"emailAddress"]; 

    NSLog(@"12334%@",details); 

    NSError *error = nil; 

    _txt_user.text [email protected]""; 

    _txt_pass.text [email protected]""; 

    _txt_email.text [email protected]""; 
    // Save the object to persistent store 
    if (![context save:&error]) { 

     NSLog(@"Can't Save! %@ ",error .localizedDescription); 

    } 

} 

    [self.navigationController popViewControllerAnimated:YES]; 

} 

- (IBAction)btt_cancel:(id)sender { 

    [self.navigationController popViewControllerAnimated:YES]; 

} 


@end 
+0

請在你的代碼上加一些說明。 – 2017-11-03 09:07:49

0
//first view controller 

#import "ViewController.h" 

#import "SecondViewController.h" 

#import "SecondTableViewCell.h" 

#import "AppDelegate.h" 





@interface ViewController()<UITableViewDataSource,UITableViewDelegate> 

@property(strong)NSMutableArray *company; 



@end 



@implementation ViewController 



- (NSManagedObjectContext *)managedObjectContext 

{ 

    NSManagedObjectContext *context = nil; 

    id delegate = [[UIApplication sharedApplication] delegate]; 

    if ([delegate performSelector:@selector(managedObjectContext)]) { 

     context = [delegate managedObjectContext]; 

    } 

    return context; 

} 



- (void)viewDidLoad { 

    [super viewDidLoad]; 

    // Do any additional setup after loading the view, typically from a nib. 

} 



- (void)didReceiveMemoryWarning { 

    [super didReceiveMemoryWarning]; 

    // Dispose of any resources that can be recreated. 

} 



- (void)viewDidAppear:(BOOL)animated 

{ 

    [super viewDidAppear:animated]; 



    // Fetch the devices from persistent data store 

    NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"CompanyDetails"]; 

    self.company = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy]; 



    [self.tableview reloadData]; 

} 



#pragma mark-datasource 



- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

{ 

    // Return the number of sections. 

    return 1; 

} 



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

{ 

    // Return the number of rows in the section. 

    return self.company.count; 

} 



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{ 

    static NSString *CellIdentifier = @"sri"; 

    SecondTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 



    // Configure the cell... 

    NSManagedObject *device = [self.company 

           objectAtIndex:indexPath.row]; 



    cell.lbl_c.text=[NSString stringWithFormat:@"%@", [device valueForKey:@"companyName"]]; 



    cell.lbl_e .text=[NSString stringWithFormat:@"%@" , [device valueForKey:@"empName"]]; 



    cell.lbl_s .text=[NSString stringWithFormat:@"%@", [device valueForKey:@"salary"]]; 

    cell.img_g.image =[UIImage imageWithData:[device valueForKey:@"companyImage"]]; 



    return cell; 

} 



// delete 



- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 

{ 

    // Return NO if you do not want the specified item to be editable. 

    return YES; 

} 





- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

{ 

    NSManagedObjectContext *context = [self managedObjectContext]; 



    if (editingStyle == UITableViewCellEditingStyleDelete) { 

     // Delete object from database 

     [context deleteObject:[self.company 

           objectAtIndex:indexPath.row]]; 



     NSError *error = nil; 

     if (![context save:&error]) { 

      NSLog(@"Can't Delete! %@ %@", error, [error localizedDescription]); 

      return; 

     } 



     // Remove device from table view 

     [self.company removeObjectAtIndex:indexPath.row]; 

     [self.tableview deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

    } 

} 



- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

{ 

    if ([[segue identifier] isEqualToString:@"segue"]) { 

     NSManagedObject *selectedDevice = [self.company objectAtIndex:[[self.tableview indexPathForSelectedRow] row]]; 

     SecondViewController *vc2 = segue.destinationViewController; 

     vc2.device = selectedDevice; 

    } 

} 



@end 



//second view controller 



#import "SecondViewController.h" 

#import "AppDelegate.h" 

#import <CoreData/CoreData.h> 







@interface SecondViewController()<UINavigationControllerDelegate,UIImagePickerControllerDelegate> 



@end 



@implementation SecondViewController 

@synthesize device; 



-(NSManagedObjectContext *)managedObjectContext 

{ 

    NSManagedObjectContext *context = nil; 



    id delegate = [[UIApplication sharedApplication] delegate]; 

    if ([delegate performSelector:@selector(managedObjectContext)]) { 

     context = [delegate managedObjectContext]; 

    } 

    return context; 

} 





- (void)viewDidLoad { 

    [super viewDidLoad]; 



    if (self.device) { 

     [self.txt_c setText:[self.device valueForKey:@"companyName"]]; 

     [self.txt_e setText:[self.device valueForKey:@"empName"]]; 

     [self.txt_s setText:[self.device valueForKey:@"salary"]]; 

     self.img.image = [UIImage imageWithData:[self.device valueForKey:@"companyImage"]]; 



//  self.txt_stdname.text = [NSString stringWithFormat:@"%@",[self.obj valueForKey:@"studentName"]]; 

//   

//  self.txt_strrollno.text = [NSString stringWithFormat:@"%@",[self.obj valueForKey:@"studentRollno"]]; 

//   

//  self.txt_stddept.text = [NSString stringWithFormat:@"%@",[self.obj valueForKey:@"studentDepartment"]]; 





    } 



    // Do any additional setup after loading the view. 

} 



- (void)didReceiveMemoryWarning { 

    [super didReceiveMemoryWarning]; 

    // Dispose of any resources that can be recreated. 

} 



/* 

#pragma mark - Navigation 



// In a storyboard-based application, you will often want to do a little preparation before navigation 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    // Get the new view controller using [segue destinationViewController]. 

    // Pass the selected object to the new view controller. 

} 

*/ 



- (IBAction)btt_save:(id)sender { 



    NSManagedObjectContext *context = [self managedObjectContext]; 

    if(self.device) 

    { 

     [device setValue:self.txt_c.text forKey:@"companyName"]; 

     [device setValue:self.txt_e.text forKey:@"empName"]; 

     [device setValue:self.txt_s.text forKey:@"salary"]; 





     NSData *imgdata = UIImageJPEGRepresentation(self.img.image, 0.0); 

     [device setValue:imgdata forKey:@"companyImage"]; 





    } 

    else 

    { 



    NSManagedObject *comdetails = [NSEntityDescription insertNewObjectForEntityForName:@"CompanyDetails" inManagedObjectContext:context]; 

    [comdetails setValue:self.txt_c.text forKey:@"companyName"]; 

    [comdetails setValue:self.txt_e.text forKey:@"empName"]; 

    [comdetails setValue:self.txt_s.text forKey:@"salary"]; 



    NSData *imgdata = UIImageJPEGRepresentation(self.img.image, 0.0); 

    [comdetails setValue:imgdata forKey:@"companyImage"]; 

    } 



    NSError *error = nil; 

    // Save the object to persistent store 

    if (![context save:&error]) { 

     NSLog(@"Can't Save! %@ ", error.localizedDescription); 

    } 

    [self.navigationController popViewControllerAnimated:YES]; 

} 



- (IBAction)btt_gallery:(id)sender { 



    UIImagePickerController *imagePicker = [[UIImagePickerController alloc]init]; 

    imagePicker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary; 

    imagePicker.delegate = self; 

    [self presentViewController:imagePicker animated:YES completion:nil]; 





} 



#pragma mark UIImagePickerControllerDelegate 







- (void) imagePickerController:(UIImagePickerController *)picker 



     didFinishPickingImage:(UIImage *)image 



        editingInfo:(NSDictionary *)editingInfo 



{ 



    self.img.image = image; 



    [self dismissModalViewControllerAnimated:YES]; 



} 







- (IBAction)btt_cancel:(id)sender { 



    [self.navigationController popViewControllerAnimated:YES]; 

} 


@end 
-1
#import "ViewController.h" 

#import "CollectionViewCell1234.h" 

#import "ViewController6778.h" 







@interface ViewController()<NSURLConnectionDelegate,NSURLConnectionDataDelegate,UICollectionViewDelegate,UICollectionViewDataSource,UINavigationControllerDelegate> 



@property (nonatomic ,strong)NSData *resultdata; 

@property (nonatomic,strong)NSMutableArray *array1; 



@end 



@implementation ViewController 



- (void)viewDidLoad { 

    [super viewDidLoad]; 

    // Do any additional setup after loading the view, typically from a nib. 

    [self webserviceCallingUsingGETMethod]; 

    _collectionview.backgroundColor = [UIColor purpleColor]; 





} 



- (void)didReceiveMemoryWarning { 

    [super didReceiveMemoryWarning]; 

    // Dispose of any resources that can be recreated. 

} 

#pragma mark- delegate 

-(void)webserviceCallingUsingGETMethod 

{ 

NSString *stringurl = @"https://itunes.apple.com/search?"; 

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",stringurl]]; 

NSString *params = @"term=jack+johnson&entity=musicVideo"; 

NSData *postdata = [params dataUsingEncoding:NSUTF8StringEncoding]; 

NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init]; 

[request setURL:url]; 

[request setHTTPMethod:@"POST"]; 

[request setHTTPBody:postdata]; 

[NSURLConnection connectionWithRequest:request delegate:self]; 



    NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 



[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { 



    if (connectionError) { 

     NSLog(@"Error :%@", connectionError.localizedDescription); 

     return; 

    } 



    if (data) { 



     self.resultdata = data; 

     NSError *error = nil; 





     NSDictionary *result = [NSJSONSerialization JSONObjectWithData:_resultdata options:NSJSONReadingAllowFragments error:&error]; 



     NSLog(@"RESULT :%@", result); 



     NSArray *array = [result valueForKey:@"results"]; 

     _array1 =[[NSMutableArray alloc]init]; 

     _array1 = [NSMutableArray arrayWithArray:array]; 

     NSLog(@"122345%@",array); 



     dispatch_async(dispatch_get_main_queue(), ^{ 



      [_collectionview reloadData]; 

     }); 



    } 

}]; 





} 







#pragma mark-collectionview delegate 



- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView 

{ 

    return 1; 

} 





- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 

{ 

    return _array1.count; 

} 



- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 

{ 

    NSString *nschool = @"sri"; 

    CollectionViewCell1234 *cell = [collectionView dequeueReusableCellWithReuseIdentifier:nschool forIndexPath:indexPath]; 

    cell.imgview.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",[[_array1 valueForKey:@"artworkUrl30"]objectAtIndex:indexPath.row]]]]]; 

    cell.backgroundColor = [UIColor greenColor]; 

    cell.lbl1.text = [[self.array1 valueForKey:@"wrapperType"]objectAtIndex:indexPath.row]; 

    cell.lbl2.text = [[self.array1 valueForKey:@"artistName"]objectAtIndex:indexPath.row]; 

    cell.lbl3.text = [[self.array1 valueForKey:@"releaseDate"]objectAtIndex:indexPath.row]; 

    cell.lbl4.text = [[self.array1 valueForKey:@"country"]objectAtIndex:indexPath.row]; 

    cell.lbl5.text = [[self.array1 valueForKey:@"currency"]objectAtIndex:indexPath.row]; 

    cell.lbl6.text = [[self.array1 valueForKey:@"trackName"]objectAtIndex:indexPath.row]; 

    cell.lbl7.text = [[self.array1 valueForKey:@"kind"]objectAtIndex:indexPath.row]; 





    NSInteger artid= [[[self.array1 valueForKey:@"artistId"]objectAtIndex:indexPath.row]integerValue]; 

    NSString *str1 =[NSString stringWithFormat:@"%ld",(long)artid]; 

    cell.lbl8.text = str1; 

    CGFloat cp = [[[self.array1 valueForKey:@"collectionPrice"]objectAtIndex:indexPath.row]floatValue]; 

    NSString *str4 = [NSString stringWithFormat:@"%3f",cp]; 

    cell.lbl9.text = str4; 

    cell.lbl10.text = [[self.array1 valueForKey:@"collectionExplicitness"]objectAtIndex:indexPath.row]; 

    cell.lbl11.text = [[self.array1 valueForKey:@"primaryGenreName"]objectAtIndex:indexPath.row]; 





    NSInteger tracknum = [[[self.array1 valueForKey:@"trackId"]objectAtIndex:indexPath.row]integerValue]; 

    NSString *str3 = [NSString stringWithFormat:@"%ld",(long)tracknum]; 

    cell.lbl12.text = str3; 

    cell.lbl13.text = [[self.array1 valueForKey:@"trackExplicitness"]objectAtIndex:indexPath.row]; 



    NSInteger tracknum1 =[[[self.array1 valueForKey:@"trackTimeMillis"]objectAtIndex:indexPath.row]integerValue]; 

    NSString *str2 = [NSString stringWithFormat:@"%ld",(long)tracknum1]; 



    cell.lbl14.text =str2; 

    return cell; 

} 

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 

{ 

    [self performSegueWithIdentifier:@"segue" sender:self]; 

} 



- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

{ 

    if ([[segue identifier] isEqualToString:@"segue"]) 

    { 

     ViewController6778 *vc2 = [segue destinationViewController]; 

     vc2.img1.images ; 

    } 

} 

@end 
0
#import "ViewController.h" 
#import "secondTableViewCell.h" 
#import "SecondViewController.h" 

@interface ViewController()<NSURLConnectionDelegate,NSURLConnectionDataDelegate,UITableViewDelegate,UITableViewDataSource> 

@property(nonatomic,strong)NSData *get_data; 
@property(nonatomic,strong)NSMutableArray *result_array; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSString *base_url = @"https://itunes.apple.com/lookup?id=909253&entity=album"; 

    NSURL *url =[NSURL URLWithString:[NSString stringWithFormat:@"%@",base_url]]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init]; 
    [request setURL:url]; 
    [request setHTTPMethod:@"GET"]; 
    [NSURLConnection connectionWithRequest:request delegate:self]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
#pragma mark- nsurlconnection delegate 

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error; 
{ 
    NSLog(@"%@",error.localizedDescription); 
} 
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(nonnull NSURLResponse *)response 
{ 

    NSLog(@"%@",response); 
} 
-(void)connection:(NSURLConnection *)connection didReceiveData:(nonnull NSData *)data 
{ 

    NSLog(@"88888%@",data); 

    if ([data length]) 
    { 
     self.get_data = [[NSData alloc]init]; 
     self.get_data =data; 
     NSLog(@"%@",self.get_data); 

    } 


} 
-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSError *error = nil; 

    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:self.get_data options:NSJSONReadingMutableLeaves error:&error]; 
    NSLog(@"vijay%@",dict); 


    if (!error) 
    { 

     NSArray *array = [dict valueForKey:@"results"]; 
     NSLog(@"1212%@",array); 

     self.result_array = [[NSMutableArray alloc]init]; 

     self.result_array = [NSMutableArray arrayWithArray:array]; 

       dispatch_async(dispatch_get_main_queue(), ^{ 
        [_tableview reloadData]; 
       }); 
    } 


} 
#pragma mark -uitableview datasource 

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return self.result_array.count; 
} 
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    secondTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"sri"]; 
    if (cell == nil) 
    { 
     cell = [[secondTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil]; 
    } 

    cell.lbl1.text = [[self.result_array valueForKey:@"wrapperType"]objectAtIndex:indexPath.row]; 
    cell.lbl2.text = [[self.result_array valueForKey:@"artistName"]objectAtIndex:indexPath.row]; 
    cell.lbl3.text = [[self.result_array valueForKey:@"primaryGenreName"]objectAtIndex:indexPath.row]; 

    // integer to string 
    NSInteger artid = [[[self.result_array valueForKey:@"artistId"]objectAtIndex:indexPath.row] integerValue]; 

    NSString *str = [NSString stringWithFormat:@"%ld",(long)artid]; 

//  NSInteger release = [[[self.result_array valueForKey:@"releaseDate"]objectAtIndex:indexPath.row] integerValue]; 
//  
//  NSString *str1 = [NSString stringWithFormat:@"%ld",(long)release]; 
    // 
// cell.lbl3.text = str; 
//// //  // float to string 
//  float a = [[[self.result_array valueForKey:@"collectionPrice"]objectAtIndex:indexPath.row]floatValue]; 
//  NSString *str1 = [NSString stringWithFormat:@"%.2f",a]; 
//  
     cell.lbl4.text = str; 

//// 
//  
    cell.img1.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",[[_result_array valueForKey:@"artworkUrl60"]objectAtIndex:indexPath.row]]]]]; 
//  
//  
//  
//  
//  
//  
    return cell; 
} 
// 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self performSegueWithIdentifier:@"segue" sender:self]; 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

    cell.accessoryType = UITableViewCellAccessoryCheckmark; 



    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"segue"]) { 
     //Do something 

     NSIndexPath *index = [self.tableview indexPathForSelectedRow]; 


     SecondViewController *detailController = [segue destinationViewController]; 
     // detailController.txt2= [cricket objectAtIndex:index.row]; 



     detailController.imgg1= [UIImage imageNamed:[_result_array objectAtIndex:index.row]]; 



    } 

} 
@end