Sunday, September 15, 2013

twitter

facebook



static NSString* kAppId = @"210849718975311";

In DidLoad :-


permissions = [[NSArray alloc] initWithObjects:@"read_stream", @"publish_stream",@"offline_access", nil];
    [permissions retain];
    facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:self];


#pragma mark -Login for Facebook
- (void)fbDidLogin
{
    [facebook requestWithGraphPath:@"me" andDelegate:self];
    // Save authorization information
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];
   
    //Remove Old User detail
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"username"];
    [[NSUserDefaults standardUserDefaults]removeObjectForKey:@"password"];
    appDelegate.isLogin = YES;
    btnLogin.hidden= YES;
    btnLogout.hidden = NO;
}
-(void)fbDidNotLogin:(BOOL)cancelled
{
}
- (void)fbDidLogout
{
    appDelegate.isLogin = NO;
  
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [facebook invalidateSession];
    [defaults removeObjectForKey:@"FBAccessTokenKey"];
    [defaults removeObjectForKey:@"FBExpirationDateKey"];
    [defaults synchronize];
   
    NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    //  NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]];
   
    for (NSHTTPCookie* cookie in [cookies cookies])
    {
        NSString* domainName = [cookie domain];
        NSRange domainRange = [domainName rangeOfString:@"facebook"];
        if(domainRange.length > 0)
        {
            [cookies deleteCookie:cookie];
        }
    }
    btnLogout.hidden = YES;
    btnLogin.hidden = NO;
}
#pragma mark - FBRequestDelegate Methods
- (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response {
    NSLog(@"received response");
}
- (void)request:(FBRequest *)request didLoad:(id)result {
   
    if ([result isKindOfClass:[NSArray class]]) {
        result = [result objectAtIndex:0];
    }
   
     strUser = [appDelegate removeNull:[result objectForKey:@"username"]];
    [strUser retain];
   
    strEmail = [appDelegate removeNull:[result objectForKey:@"email"]];
    [strEmail retain];
   
    strFname = [appDelegate removeNull:[result objectForKey:@"first_name"]];
    [strFname retain];
   
    strLname = [appDelegate removeNull:[result objectForKey:@"last_name"]];
    [strLname retain];
      
     UserImage *objUserImg = (UserImage *)[NSEntityDescription
                                               insertNewObjectForEntityForName:@"UserImage"
                                               inManagedObjectContext:appDelegate.managedObjectContext];
   
    if ([strEmail isEqualToString:@""]) {
        strEmail = [appDelegate removeNull:[[result objectForKey:@"username"] stringByAppendingString:@"@facebook.com"]];
    }
     
    objUserImg.fbUsername = [result objectForKey:@"name"];
    objUserImg.fbId = [result objectForKey:@"id"];
   
   strUserImage = [[NSString alloc] initWithFormat:@"https://graph.facebook.com/%@/picture",[result objectForKey:@"id"]];
    [strUserImage retain];
    
    strFBId = [result objectForKey:@"id"];
    [strFBId retain];
   
    NSString *str = [strFBId stringByAppendingString:@"ThaAfterParty"];
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:result forKey:@"FBUserDetail"];
    [userDefaults synchronize];
}


For Login :-

-(void)onClickLogin
{
    [self fbDidLogout];
    if (![[self facebook] isSessionValid]) {
        [[self facebook] authorize:self.permissions];
    }else {
        [facebook requestWithGraphPath:@"me" andDelegate:self];
    }
}

Cell Details :-

{
static NSString *cellIdentifier = @"CustomCell";
    CustomCellAllergy *cell = (CustomCellAllergy *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
   
    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCellAllergy" owner:self options:nil];
        for (id currentObject in topLevelObjects)
        {
            if ([currentObject isKindOfClass:[UITableViewCell class]]){
               
                cell =  (CustomCellAllergy *) currentObject;
                  break;
            }
        }
    }
    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];

NSDictionary *result = [array objectAtIndex:indexPath.row];
    [cell setObjItem:result];
 return  cell;
}


#pragma mark - Share Methods
-(void)sharetoFB
{
    NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:[objUserImage valueForKey:@"imageurl"]]];
    UIImage *img=[UIImage imageWithData:data];
   
    NSDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"Share on Facebook",  @"user_message_prompt",
                            @" App",@"text",
                            @" App", @"caption",
                            img,@"picture",
                            nil];
   
    [self.facebook requestWithMethodName:@"photos.upload"
                               andParams:[params mutableCopy]
                           andHttpMethod:@"POST"
                             andDelegate:self];
   
    [img release];
}

#pragma mark -
#pragma mark FlickrCellDelegate methods
- (void)loadContentForVisibleCells
{
    NSArray *cells = [tblView visibleCells];
    [cells retain];
    for (int i = 0; i < [cells count]; i++)
    {
        CommentCell *flickrCell = (CommentCell *)[cells objectAtIndex: i] ;
        [flickrCell loadImage];
    }
    [cells release];
}
- (void)flickrCellAnimationFinished:(CommentCell *)cell {
   
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
{
    [self loadContentForVisibleCells];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
{
    if (!decelerate)
    {
        [self loadContentForVisibleCells];
    }
 
}

CustomTabbar

CustomTabbar.h



#import <UIKit/UIKit.h>
#import "UIView+NibLoading.h"


@class CustomTabBar;

@protocol CustomTabBarDelegate

@required
- (void)setTabIndex:(int)index;
@end


@interface CustomTabBar : UIView {
    //id<CustomTabBarDelegate> delegate;
}
@property (nonatomic, strong)IBOutlet UIImageView *imgTabBackGround;
@property (nonatomic, strong)IBOutlet UIButton *btnOne, *btnTwo, *btnThree;

@property(nonatomic, strong)IBOutlet UILabel *lblone;
@property(nonatomic, strong)IBOutlet UILabel *lbltwo;
@property(nonatomic, strong)IBOutlet UILabel *lblthree;

@property(nonatomic, strong)IBOutlet UIImageView *imgOne;
@property(nonatomic, strong)IBOutlet UIImageView *imgTwo;
@property(nonatomic, strong)IBOutlet UIImageView *imgThree;

@property (nonatomic, strong) id<CustomTabBarDelegate> delegate;

-(IBAction)onClickbtnOne:(id)sender;
-(IBAction)onClickbtnTwo:(id)sender;
-(IBAction)onClickbtnThree:(id)sender;



CustomTabbar.m





#import "CustomTabBar.h"
#import <QuartzCore/QuartzCore.h>
#import "AppDelegate.h"
#import "TabBarController.h"

@implementation CustomTabBar

AppDelegate *appDelegate;



#pragma mark -
#pragma mark - init methods

-(id) initWithFrame:(CGRect)frame {
   
    if(self == [super initWithFrame:frame])
    {
        appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
        self = (CustomTabBar *)[CustomTabBar loadInstanceFromNib:self];
        self.frame = frame;     
        //self.hidden = TRUE;
        [self setBackgroundColor:[UIColor clearColor]];
        [self onClickbtnOne:nil];
    }
    return self;
}

#pragma mark -
#pragma mark - Actions

-(IBAction)onClickbtnOne:(id)sender{
    appDelegate.tabBarController.selectedIndex=0;
    [delegate setTabIndex:0];
       [self setTabBar];
    [self.lblOne setFont:[UIFont boldSystemFontOfSize:10.0]];
    [self.lblOne setTextColor:[UIColor whiteColor]];
    [self.imgOne setImage:[UIImage imageNamed:@"btnOne_on"]];
}
-(IBAction)onClickbtnTwo:(id)sender{
    appDelegate.tabBarController.selectedIndex=1;
    [delegate setTabIndex:1];
       [self setTabBar];
    [self.lblTwo setFont:[UIFont boldSystemFontOfSize:10.0]];
    [self.lblTwo setTextColor:[UIColor whiteColor]];
    [self.imgTwo setImage:[UIImage imageNamed:@"btnTwo_on"]];
}
-(IBAction)onClickbtnThree:(id)sender{
    appDelegate.tabBarController.selectedIndex=2;
    [delegate setTabIndex:2];
 
    [self setTabBar];
    [self.lblThree setFont:[UIFont boldSystemFontOfSize:10.0]];
    [self.lblThree setTextColor:[UIColor whiteColor]];
    [self.imgThree setImage:[UIImage imageNamed:@"btnThree_on"]];
}

-(void)setTabBar{
    [self.lblOne setFont:[UIFont systemFontOfSize:10.0]];
    [self.lblOne setTextColor:[UIColor lightGrayColor]];
    [self.lblTwo setFont:[UIFont systemFontOfSize:10.0]];
    [self.lblTwo setTextColor:[UIColor lightGrayColor]];
    [self.lblThree setFont:[UIFont systemFontOfSize:10.0]];
    [self.lblThree setTextColor:[UIColor lightGrayColor]];
   
    [self.imgOne setImage:[UIImage imageNamed:@"btnZ"]];
    [self.imgTwo setImage:[UIImage imageNamed:@"btnS"]];
    [self.imgThree setImage:[UIImage imageNamed:@"btnY"]];
}


@end

Category Class :-


#import "UIView+NibLoading.h"

@implementation UIView (NibLoading)

+(UIView*) loadInstanceFromNib:(id)fileOwner {
   
    UIView *result = nil;
    //NSLog(@"[self class] >>>> %@",NSStringFromClass([self class]));
    NSArray* elements = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:fileOwner options: nil];
    for (id anObject in elements) {
        if ([anObject isKindOfClass:[self class]]) {
            result = anObject;
            break;
        }
    }
    return result;
}

@end


-(void)addCustomTabbar
{
    if(self.objCustomTabBar == nil)
        self.objCustomTabBar=[[CustomTabBar alloc]initWithFrame:CGRectMake(0, ((isiPhone5) ? 498.0:410.0), 321, 70)];
    [self.window addSubview:self.objCustomTabBar];
    [self.window bringSubviewToFront:self.objCustomTabBar];
}


Saturday, September 14, 2013

Reg Date

RegisterView.h

#import <UIKit/UIKit.h>
#import "HttpWrapper.h"
#import "ASIFormDataRequest.h"
#import "BSKeyboardControls.h"
#import "TermsAndConditon.h"


@interface RegisterView : UIViewController<UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDelegate,HttpWrapperDelegate,UIScrollViewDelegate,BSKeyboardControlsDelegate>{

    IBOutlet UITextField *txtUserName;
    IBOutlet UITextField *txtFirstName;
    IBOutlet UITextField *txtLastName;
    IBOutlet UITextField *txtEmail;
    IBOutlet UITextField *txtPassword;
    IBOutlet UITextField *txtRepassword;
    IBOutlet UITextField *txtDateOfBirth;
    IBOutlet UITextField *txtZip;
    IBOutlet UITextField *txtGender;
    IBOutlet UITextField *txtDisease;
    IBOutlet UIButton *btnRegister;
    IBOutlet UIView *pickerView;

    IBOutlet UIPickerView *picker;
    
    IBOutlet UIScrollView *objScroll;
    IBOutlet UIButton *btnTerms;
    NSString *pickerTitle;

    NSMutableArray *arrPickerData;

    NSMutableData *webData;
    ASIFormDataRequest *request;
    HttpWrapper *registrationRequest;
    BOOL isDateLoad;
    BOOL isGender;
    BOOL isDisease;
}
@property (nonatomic, strong) BSKeyboardControls *keyboardControls;
@property(nonatomic,retain)IBOutlet UITextField *txtUserName;
@property(nonatomic,retain)IBOutlet UITextField *txtFirstName;
@property(nonatomic,retain)IBOutlet UITextField *txtLastName;
@property(nonatomic,retain)IBOutlet UITextField *txtEmail;
@property(nonatomic,retain)IBOutlet UITextField *txtPassword;
@property(nonatomic,retain)IBOutlet UITextField *txtRepassword;
@property(nonatomic,retain)IBOutlet UITextField *txtGender;
@property(nonatomic,retain)IBOutlet UITextField *txtZip;
@property(nonatomic,retain)IBOutlet UITextField *txtDateOfBirth;
@property(nonatomic,retain)IBOutlet UITextField *txtDisease;
@property(nonatomic,retain)IBOutlet UIScrollView *objScroll;

@end

Register.m


#import "RegisterView.h"
#import "AppDelegate.h"
#import "ASIFormDataRequest.h"
#import "NSString+SBJSON.h"

@interface RegisterView ()

@end

@implementation RegisterView
@synthesize keyboardControls,objScroll;
@synthesize txtFirstName,txtLastName,txtEmail,txtPassword,txtRepassword,txtUserName,txtZip,txtDateOfBirth,txtGender,txtDisease;
AppDelegate *appDelegate;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    [objScroll setContentSize:CGSizeMake(320,570)];
     appDelegate = [AppDelegate sharedAppDelegate];
     self.title =@"Register";
    
    NSArray *fields = @[self.txtUserName,self.txtFirstName, self.txtLastName,self.txtGender,self.txtDateOfBirth,self.txtDisease,self.txtPassword,self.txtRepassword,self.txtEmail,self.txtZip];
    [self setKeyboardControls:[[BSKeyboardControls alloc] initWithFields:fields]];
    [self.keyboardControls setDelegate:self];
    
    arrPickerData =[[NSMutableArray alloc]init];
    // Do any additional setup after loading the view from its nib.
}
-(void)viewWillAppear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:NO];
}
#pragma mark - HttpWrapper Delegate Methods
#pragma mark -
-(void)HttpWrapper:(HttpWrapper *)wrapper fetchDataSuccess:(NSString *)response
{
    NSMutableDictionary *dicsUserInfo = (NSMutableDictionary *)[response JSONValue];
    if([[dicsUserInfo objectForKey:@"message"] isEqualToString:@"Registration Successful"])
    {
        [appDelegate showAlertWithTitle:@"" message:[dicsUserInfo objectForKey:@"message"]];
        [self.navigationController popViewControllerAnimated:YES];
    }
    else
    {
        [[AppDelegate sharedAppDelegate]showAlertWithTitle:@"" message:[dicsUserInfo objectForKey:@"message"]];
    }
    [appDelegate hideLoadingView];
}
-(void)HttpWrapper:(HttpWrapper *)wrapper fetchDataFail:(NSError *)error
{
    [appDelegate hideLoadingView];
    NSLog(@"======= fetchDataFail =======");
}
-(IBAction)onTermsClick:(id)sender
{
//    TermsAndConditon *termsandcondition =[[TermsAndConditon alloc]initWithNibName:@"TermsAndConditon" bundle:nil];
//    [self.navigationController pushViewController:termsandcondition animated:YES];
   
    [btnTerms setSelected:!btnTerms.selected];
     //[termsandcondition release];
}
-(IBAction)onClickRegister:(id)sender
{
    [self hideKeyboard];
    CGPoint bottomOffset = CGPointMake(0, 0);
    [objScroll setContentOffset:bottomOffset animated:YES];
    
    if(! [self validateForm])
    {
        return;
    }
    [appDelegate showLoadingView];
    
    registrationRequest = [[HttpWrapper alloc] init];
    registrationRequest.delegate=self;
    
    NSMutableDictionary *paramsDict=[[NSMutableDictionary alloc]init];
    [paramsDict setValue:txtUserName.text forKey:@"UserName"];
    [paramsDict setValue:txtFirstName.text forKey:@"FirstName"];
    [paramsDict setValue:txtLastName.text forKey:@"LastName"];
    [paramsDict setValue:txtGender.text forKey:@"Gender"];
    [paramsDict setValue:txtDateOfBirth.text forKey:@"Date_Of_Birth"];
    [paramsDict setValue:txtPassword.text forKey:@"Password"];
    [paramsDict setValue:txtEmail.text forKey:@"Email"];
    [paramsDict setValue:txtDisease.text forKey:@"Disease"];
    [paramsDict setValue:txtZip.text forKey:@"ZipCode"];
    
    NSString *strUrl = [NSString stringWithFormat:@"%@?action=RegisterUser",API_URL];
    [registrationRequest requestWithMethod:@"POST" url:strUrl param:paramsDict];
    [btnRegister resignFirstResponder];
}
-(BOOL) validateForm
{
    BOOL isValid = TRUE;
    if(![txtUserName.text isEqualToString:@""])
    {
        if(![txtFirstName.text isEqualToString:@""])
        {
            if(![txtLastName.text isEqualToString:@""])
            {
                    if(![txtEmail.text isEqualToString:@""])
                    {
                        if (![txtZip.text isEqualToString:@""])
                        {
                            if(![txtPassword.text isEqualToString:@""])
                            {
                                 if ([self validateEmailWithString:txtEmail.text])
                                {
                                    if ([self validateZip:txtZip.text])
                                    {
                                         if (btnTerms.selected)
                                        {
                                            if([txtPassword.text isEqualToString:txtRepassword.text])
                                            {
                                                return isValid;
                                            }
                                            else
                                            {
                                                [appDelegate showAlertWithTitle:@"Alert" message:@"Password Does Not Match."];
                                                txtPassword.text=@"";
                                                txtRepassword.text=@"";
                                                [txtPassword becomeFirstResponder];
                                                isValid = FALSE;
                                                return isValid;
                                            }
                                        }
                                        else
                                        {
                                             [appDelegate showAlertWithTitle:@"Alert" message:@"Please accept Terms and Conditions"];
                                             isValid = FALSE;
                                             return isValid;
                                        }
                                    }
                                    else
                                    {
                                        [appDelegate showAlertWithTitle:@"Alert" message:@"Please Fill Up ZIP Correct"];
                                        txtZip.text=@"";
                                        [txtZip becomeFirstResponder];
                                        isValid = FALSE;
                                        return isValid;
                                    }
                                }
                                else
                                {
                                    [appDelegate showAlertWithTitle:@"Alert" message:@"Please Fill Up Email Correct"];
                                    txtEmail.text=@"";
                                    [txtEmail becomeFirstResponder];
                                    isValid = FALSE;
                                    return isValid;
                                }
                            }
                        }
                    else
                    {
                        [appDelegate showAlertWithTitle:@"Alert" message:@"Password Should Not Be Blank"];
                        isValid = FALSE;
                        [txtPassword becomeFirstResponder];
                        return isValid;
                    }
                }
                else
                {
                        [appDelegate showAlertWithTitle:@"Alert" message:@"Email Should Not Be Blank"];
                        isValid = FALSE;
                        [txtEmail becomeFirstResponder];
                        return isValid;
                }
            }
            else
            {
                        [appDelegate showAlertWithTitle:@"Alert" message:@"Last Name Should Not Be Blank"];
                        isValid = FALSE;
                        [txtUserName becomeFirstResponder];
                        return isValid;
            }
        }
        else
        {
                        [appDelegate showAlertWithTitle:@"Alert" message:@"First Name Should Not Be Blank"];
                        isValid = FALSE;
                        [txtLastName becomeFirstResponder];
                        return isValid;
        }
    }
    else
    {
        [appDelegate showAlertWithTitle:@"Alert" message:@"User Name Should not Be Blank"];
        isValid = FALSE;
        [txtFirstName becomeFirstResponder];
        return isValid;
    }
    return YES;
}
-(void)GenderPickerData{
    
    isGender = YES;
    [arrPickerData removeAllObjects];
    
    [arrPickerData addObject:@"Male"];
    [arrPickerData addObject:@"Female"];
    
    [self selectPickerFirstElement];
    [picker reloadAllComponents];
}
-(void)DiseasePickerData{

    isDisease = YES;
    [arrPickerData removeAllObjects];
    
    [arrPickerData addObject:@"ADHD"];
    [arrPickerData addObject:@"Heart disease"];
    [arrPickerData addObject:@"Hyperlipidemia"];
    [arrPickerData addObject:@"Headaches"];
    [arrPickerData addObject:@"Arthritis"];
    [arrPickerData addObject:@"Osteoporosis"];
    [arrPickerData addObject:@"Insomnia"];
    [arrPickerData addObject:@"Diabetes"];
    [arrPickerData addObject:@"Hypertension - high blood pressure"];
    [arrPickerData addObject:@"Chronic Pain"];
    [arrPickerData addObject:@"GERD heartburn"];
    [arrPickerData addObject:@"BPH - enlarged prostate"];
    [arrPickerData addObject:@"Asthma"];
    [arrPickerData addObject:@"COPD"];
    [arrPickerData addObject:@"Seizures"];
    [arrPickerData addObject:@"Anxiety"];
    [arrPickerData addObject:@"Depression"];
    [arrPickerData addObject:@"Gout"];
    [arrPickerData addObject:@"Cancer"];
    [arrPickerData addObject:@"Seasonal allergies"];
    [arrPickerData addObject:@"Stroke"];
    [arrPickerData addObject:@"Thyroid disease"];
        
    
    [self selectPickerFirstElement];
    [picker reloadAllComponents];
}
-(void)selectPickerFirstElement{
    pickerTitle = [arrPickerData objectAtIndex:0];
    [picker selectRow:0 inComponent:0 animated:YES];
}
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    CGPoint offset = CGPointMake(0, 0);
    if (textField == txtUserName)
    {
        offset.y = txtUserName.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtFirstName)
    {
        offset.y = txtFirstName.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtLastName)
    {
        offset.y = txtLastName.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtGender)
    {
        isGender = YES;
        [self GenderPickerData];
        [self setPickerForTextField:txtGender
                             Target:self
                       DoneSelector:@selector(onDoneTxtGender)
                     CancelSelector:@selector(onCancelKeyboardToolbar)];
        offset.y = txtGender.frame.origin.y -50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtDateOfBirth)
    {
        isDateLoad = YES;
        [appDelegate setDatePickerForTextField:txtDateOfBirth
                                datePickerMode:UIDatePickerModeDate
                                        Target:self
                                  DoneSelector:nil
                                CancelSelector:nil];
        offset.y =txtDateOfBirth.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtDisease)
    {
        isDisease = YES;
        [self DiseasePickerData];
        [self setPickerForTextField:txtDisease
                             Target:self
                       DoneSelector:@selector(onDoneTxtDisease)
                     CancelSelector:@selector(onCancelKeyboardToolbar)];
        offset.y = txtDisease.frame.origin.y -50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtPassword)
    {
        offset.y = txtPassword.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtRepassword)
    {
        offset.y = txtRepassword.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtEmail)
    {
        offset.y = txtEmail.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField ==  txtZip)
    {
        offset.y = txtZip.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    [self.keyboardControls setActiveField:textField];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    CGPoint bottomOffset = CGPointMake(0, 0);
    [objScroll setContentOffset:bottomOffset animated:YES];
    return YES;
}
-(void) hideKeyboard
{
    for (id aView in objScroll.subviews) {
        
        if([UITextField  class] == [aView class])
        {
            UITextField *tf = (UITextField *)aView;
            [tf resignFirstResponder];
        }
    }
}
-(void) onCancelKeyboardToolbar
{
    [self.view endEditing:YES];
}
-(void)doneForTextfield:(UITextField *)textField
{
    [textField resignFirstResponder];
    UIDatePicker *pic = (UIDatePicker *)textField.inputView;
    if(pic.datePickerMode == UIDatePickerModeDate)
        textField.text = [appDelegate stringFromDate:pic.date];
    else
        textField.text = [appDelegate timeStringFromDate:pic.date];
}
-(void)onDoneTxtGender
{
    [self doneForPickerTextfield:txtGender];
}
-(void)onDoneTxtDisease
{

    [self doneForPickerTextfield:txtDisease];
}
-(void)doneForPickerTextfield:(UITextField *)textField
{
    [textField resignFirstResponder];
    textField.text = pickerTitle;
}
-(void) setPickerForTextField:(UITextField *)textfield
                       Target:(id)target
                 DoneSelector:(SEL)doneSelector
               CancelSelector:(SEL)cancelSelector
{
    textfield.inputAccessoryView = [self getNumberKeyboardToolbarWithTarget:target DoneSelector:doneSelector CancelSelector:cancelSelector];
    textfield.inputView = picker;
}
#pragma mark Picker View Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {

    return [arrPickerData count];
    
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [arrPickerData objectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    pickerTitle  = [arrPickerData objectAtIndex:row];
}
-(UIToolbar *)getNumberKeyboardToolbarWithTarget:(id)target
                                    DoneSelector:(SEL)doneSelector
                                  CancelSelector:(SEL)cancelSelector
{
    UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
    numberToolbar.barStyle = UIBarStyleBlackTranslucent;
    numberToolbar.items = [NSArray arrayWithObjects:
                           [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:target action:cancelSelector],
                           [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                           [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:target action:doneSelector],
                           nil];
    [numberToolbar sizeToFit];
    return numberToolbar;
}
- (BOOL)validateEmailWithString:(NSString*)email
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:email];
}
- (BOOL)validateZip:(NSString *)candidate {
   
      NSString *strZip =@"^[0-9]{5}(-[0-9]{4})?$";
   // NSString *strZip =@"^(\\d{5}(-\\d{4})$";
    NSPredicate *ZipTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", strZip];
    
    return [ZipTest evaluateWithObject:candidate];
}
#pragma mark Keyboard Controls Delegate

-(void) keyboardControls:(BSKeyboardControls *)keyboardControls selectedField:(UIView *)field inDirection:(BSKeyboardControlsDirection)direction
{
    CGPoint offset = field.frame.origin;
    offset.x = 0;
    offset.y -= 100;
    offset.y+=self.objScroll.frame.origin.y;
    [self.objScroll setContentOffset:offset animated:YES];
}
- (void)keyboardControlsDonePressed:(BSKeyboardControls *)keyboardControls1
{
    if(isDateLoad){
        [self doneForTextfield:txtDateOfBirth];
    }
    if (isGender) {
         [self doneForPickerTextfield:txtGender];
    }
    if (isDisease){
        [self doneForPickerTextfield:txtDisease];
    }
    
    [self.objScroll setContentOffset:CGPointZero animated:YES];
    [keyboardControls.activeField resignFirstResponder];
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end

Log Data

 LoginView.h


#import <UIKit/UIKit.h>
#import "HttpWrapper.h"
#import "ASIHTTPRequest.h"
#import "ASIFormDataRequest.h"
#import "BSKeyboardControls.h"

@interface LoginView : UIViewController<HttpWrapperDelegate,UITextFieldDelegate,BSKeyboardControlsDelegate,UIScrollViewDelegate>
{
    IBOutlet UITextField *txtUserName;
    IBOutlet UITextField *txtPassword;
    
    IBOutlet UIButton *btnSignIn;
    IBOutlet UIButton *btnSignUp;
    IBOutlet UIButton *btnRemember;
    IBOutlet UIButton *btnFogotPassword;
    IBOutlet UIScrollView *scrView;
    
    ASIFormDataRequest *request;
    HttpWrapper *regRequest,*loginRequest;
    BOOL isRemember;
}
@property(nonatomic, strong) BSKeyboardControls *keyboardControls;
@property(nonatomic,retain)IBOutlet UITextField *txtUserName;
@property(nonatomic,retain)IBOutlet UITextField *txtPassword;
@property(nonatomic,retain)IBOutlet UIScrollView *scrView;

@end

Login.m

#import "LoginView.h"
#import "RegisterView.h"
#import "AppDelegate.h"
#import "NSString+SBJSON.h"
#import "DBHelper.h"
#import "ForgotPasswordView.h"

@interface LoginView ()

@end
@implementation LoginView
@synthesize txtPassword,txtUserName,keyboardControls,scrView;
AppDelegate *appDelegate;
DBHelper *db;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
- (void)viewDidLoad
{
    [super viewDidLoad];
     appDelegate = [AppDelegate sharedAppDelegate];
     self.title =@"Login";
   
//    NSArray *fields = @[self.txtUserName,self.txtPassword];
//    [self setKeyboardControls:[[BSKeyboardControls alloc] initWithFields:fields]];
//    [self.keyboardControls setDelegate:self];
    
  //  [scrView setContentSize:CGSizeMake(320,82)];

    db = [[DBHelper alloc]init];
    
    NSString *username = [[NSUserDefaults standardUserDefaults] objectForKey:@"username"];
    NSString *password = [[NSUserDefaults standardUserDefaults] objectForKey:@"password"];
    if(username  && password)
    {
        isRemember = YES;
        [btnRemember setSelected:YES];
        txtUserName.text = username;
        txtPassword.text = password;
    }
    else
    {
        txtUserName.text = @"";
        txtPassword.text = @"";
    }
    
    UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
[self.navigationItem setBackBarButtonItem:barButton];
[barButton release];    
//    [self drawPlaceholderInRect:CGRectMake(0, 0, <#CGFloat width#>, <#CGFloat height#>)]
}
- (void) drawPlaceholderInRect:(CGRect)rect {
    [[UIColor blueColor] setFill];
    [[txtPassword placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:16]];
}
-(void)viewWillAppear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:YES];
}
-(IBAction)OnClickSignIn:(id)sender
{
    [appDelegate addTabBarControllerInwindow];
    return;

    if ([txtUserName.text isEqualToString:@""] || [txtPassword.text isEqualToString:@""]) {
        [appDelegate showAlertWithTitle:@"Alert" message:@"Please Enter  UserName and Password"];
        
        return;
    }
    if(loginRequest)
    {
        [loginRequest cancelRequest];
        [loginRequest release];
        loginRequest = nil;
    }
    [appDelegate showLoadingView];
    loginRequest = [[HttpWrapper alloc] init];
    loginRequest.delegate=self;
    NSString *strUrl = [NSString stringWithFormat:@"%@?action=CheckLogin&UName=%@&Pwd=%@",API_URL,txtUserName.text,txtPassword.text];
    [loginRequest requestWithMethod:@"GET" url:strUrl param:nil];
}
-(IBAction)onClickForgotPass:(id)sender
{
    ForgotPasswordView *forgotPass =[[ForgotPasswordView alloc]initWithNibName:@"ForgotPasswordView" bundle:nil];
    [self.navigationController pushViewController:forgotPass animated:YES];
    [forgotPass release];
}
-(void) HttpWrapper:(HttpWrapper *)wrapper fetchDataFail:(NSError *)error
{
    if(wrapper == loginRequest)
    {
       // btnLogin.enabled=YES;
    }
    else if(wrapper == regRequest)
    {
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults removeObjectForKey:@"username"];
        [userDefaults synchronize];
    }
    [appDelegate showAlertWithTitle:@"Connection" message:@"Please check internet connection"];
    [appDelegate hideLoadingView];
    //  [activity stopAnimating];
    self.view.userInteractionEnabled = YES;
 //   btnLogin.hidden = NO;
}
-(void) HttpWrapper:(HttpWrapper *)wrapper fetchDataSuccess:(NSString *)response
{
  //  btnLogin.hidden = NO;
    // [activity stopAnimating];
    [appDelegate hideLoadingView];
    self.view.userInteractionEnabled = YES;
    if(wrapper == loginRequest)
    {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        NSString *strUsername=[defaults objectForKey:@"username"];
        
        if (![txtUserName.text isEqualToString:strUsername]) {
            [db deleteAllPatientInfo];
        }
        
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        if (isRemember) {
            [userDefaults setObject:txtUserName.text forKey:@"username"];
            [userDefaults setObject:txtPassword.text forKey:@"password"];
        }
        else{
            [userDefaults removeObjectForKey:@"username"];
            [userDefaults removeObjectForKey:@"password"];
            [userDefaults setObject:txtUserName.text forKey:@"username"];
        }
        appDelegate.isLogin = YES;
        [userDefaults setBool:appDelegate.isLogin forKey:@"login"];
         [userDefaults synchronize];

        NSLog(@"Login >fetch success %@",response);
        //[appDelegate loadTabbar];
       // btnLogin.enabled=YES;
        NSMutableDictionary *dict= (NSMutableDictionary *)[response JSONValue];
        appDelegate.dirUserInfo = dict;
        if([[dict valueForKey:@"status"]integerValue] == 0){
            [appDelegate showAlertWithTitle:@"Login" message:@"Invalid Login"];
            [appDelegate hideLoadingView];
            return;
        }
        appDelegate.userID=[[appDelegate.dirUserInfo valueForKey:@"userid"] intValue];
        
        [appDelegate addTabBarControllerInwindow];
    }
}
-(IBAction)onClickRemember:(id)sender
{
    [btnRemember setSelected:!btnRemember.selected];
    isRemember = btnRemember.selected;
}
-(IBAction)OnClickSignUp:(id)sender
{
    RegisterView *objregister =[[RegisterView alloc]initWithNibName:@"RegisterView" bundle:nil];
    [self.navigationController pushViewController:objregister animated:YES];
    [objregister release];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
-(void) textFieldDidEndEditing:(UITextField *)textField
{
    [textField resignFirstResponder];
    CGPoint bottomOffset = CGPointMake(0, 0);
    [scrView setContentOffset:bottomOffset animated:YES];
}
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    CGPoint offset = CGPointMake(0,0);
    if (textField == txtUserName)
    {
        offset.y = txtUserName.frame.origin.y-10;
        [scrView setContentOffset:offset animated:NO];
    }
    else if (textField == txtPassword)
    {
        offset.y = txtPassword.frame.origin.y-10;
        [scrView setContentOffset:offset animated:NO];
    }
   // [self.keyboardControls setActiveField:textField];
}
#pragma mark Keyboard Controls Delegate
/*
-(void) keyboardControls:(BSKeyboardControls *)keyboardControls selectedField:(UIView *)field inDirection:(BSKeyboardControlsDirection)direction
{
    CGPoint offset = field.frame.origin;
    offset.x = 0;
    offset.y -= 100;
    offset.y+=self.scrView.frame.origin.y;
    [self.scrView setContentOffset:offset animated:YES];
}
- (void)keyboardControlsDonePressed:(BSKeyboardControls *)keyboardControls1
{
    [self.scrView setContentOffset:CGPointZero animated:YES];
    [keyboardControls.activeField resignFirstResponder];
}
 */
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end

TouchXml Demo

Image processes in particular View using Async

Image processes in particular View using Async :-

In xib take one View n give reference of asyncimage

- (void)viewDidLoad
{
    [super viewDidLoad];


scroller =[[CustomScrollBar alloc]initWithFrame:CGRectMake(0,44,
                                        320,460)];
    
    scroller.maximumZoomScale = 4.0;
    scroller.minimumZoomScale = 1.0;
    scroller.clipsToBounds = YES;
    scroller.scrollEnabled = YES;
    scroller.multipleTouchEnabled = YES;
    scroller.userInteractionEnabled = YES;
    scroller.showsHorizontalScrollIndicator = YES;
    scroller.showsVerticalScrollIndicator = YES;
    scroller.scrollsToTop = NO;
    scroller.delegate = self;
    scroller.del = self;
    scroller.contentSize = CGSizeMake(scroller.frame.size.width,
                                      scroller.frame.size.height);
    
    float x = asyImg.bounds.size.width/2;
    float y = (asyImg.bounds.size.height/2);
    asyImg.center = CGPointMake(x, y);
    [asyImg setFrame:CGRectMake(0,44, 320, 290)];
    [scroller addSubview:asyImg];
    self.view.clipsToBounds = YES;
    [self.view addSubview:scroller];
    
       
    [asyImg loadImageFromString:[objImage valueForKey:@"image"] dict:nil];

}

#pragma mark -
#pragma mark scrollView Delegate Methods
-(UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return asyImg;
}
#pragma mark -
#pragma mark Touch Delegate Methods
- (void)touchesBeganScroll:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesMovedScroll:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesEndedScroll:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch tapCount] == 1) {
        [scroller setZoomScale:1.0];
        [self setViewAnimation:CGRectMake(10, 65, 320, 350)];
    }
}
-(void) setViewAnimation:(CGRect)frame {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
    asyImg.frame = self.view.frame;
    scroller.contentSize = self.view.frame.size;
    [UIView commitAnimations];
}


If we want to Post Image :-


-(void)imageUpload
{

  request = [[[ASIFormDataRequest alloc] initWithURL:strUrl] autorelease];
    [request setRequestMethod:@"POST"];
    [request setTimeOutSeconds:120];
    
    [request addRequestHeader:@"Content-Type" value:@"multipart/form-data"];

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
        NSString *strUser = [prefs valueForKey:@"username"];
        [strUser retain];
        NSString * strUserLocal = [strUser stringByAppendingString:@".jpeg"];
        NSString *imagePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:strUserLocal];


[request setPostValue:@"png" forKey:@"type"];
    [request setFile:fetchPath withFileName:imageName andContentType:@"image/ jpg" forKey:@"image"];


    [request setUseCookiePersistence:NO];
    [request setUseSessionPersistence:NO];
    
    [request setDelegate:self];
    [request setDidFinishSelector:@selector(requestFinished:)];
    [request setDidFailSelector:@selector(requestFailed:)];
    [request setShowAccurateProgress:YES];
    [request startAsynchronous];


}

OR Other Way to Upload Photo :-


- (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize {
  UIImage *sourceImage = self;
  UIImage *newImage = nil;
  
  CGSize imageSize = sourceImage.size;
  CGFloat width = imageSize.width;
  CGFloat height = imageSize.height;
  
  CGFloat targetWidth = targetSize.width;
  CGFloat targetHeight = targetSize.height;
  
  CGFloat scaleFactor = 0.0;
  CGFloat scaledWidth = targetWidth;
  CGFloat scaledHeight = targetHeight;
  
  CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
  
  if (CGSizeEqualToSize(imageSize, targetSize) == NO) {
    
    CGFloat widthFactor = targetWidth / width;
    CGFloat heightFactor = targetHeight / height;
    
    if (widthFactor < heightFactor)
      scaleFactor = widthFactor;
    else
      scaleFactor = heightFactor;
    
    scaledWidth  = width * scaleFactor;
    scaledHeight = height * scaleFactor;
    
    // center the image
    
    if (widthFactor < heightFactor) {
      thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
    } else if (widthFactor > heightFactor) {
      thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
    }
  }
  
  
  // this is actually the interesting part:
  
  UIGraphicsBeginImageContext(targetSize);
  
  CGRect thumbnailRect = CGRectZero;
  thumbnailRect.origin = thumbnailPoint;
  thumbnailRect.size.width  = scaledWidth;
  thumbnailRect.size.height = scaledHeight;
  
  [sourceImage drawInRect:thumbnailRect];
  
  newImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();
  
  if(newImage == nil) NSLog(@"could not scale image");
  
  
  return newImage ;
}



-(void)imageUpload
{

NSURL *strUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@? action=addComment",Server_URL_MOBICH]];
        
    request = [[[ASIFormDataRequest alloc] initWithURL:strUrl] autorelease];        
    NSData *imageData = nil;
UIImage *image;
    if (image !=nil) {
            UIImage *newImage = [image imageByScalingProportionallyToSize:CGSizeMake(600, 600)];
            imageData = UIImageJPEGRepresentation(newImage, 0.9);
            [request setData:imageData forKey:@"image"];
            [request setPostValue:@"png" forKey:@"type"];
            [request setPostValue:@"ImageType" forKey:@"comment_type"];
        }
        
    
            [request setRequestMethod:@"POST"];
            [request setTimeOutSeconds:120];
            
            [request addRequestHeader:@"Content-Type" value:@"multipart/form-data"];
            [request setUseCookiePersistence:NO];
            [request setUseSessionPersistence:NO];
            
            [request setDelegate:self];
            [appDelegate showLoadingView];
            [request setDidFinishSelector:@selector(requestFinished:)];
            [request setDidFailSelector:@selector(requestFailed:)];
            [request setShowAccurateProgress:YES];
            [request startAsynchronous];
        }
}

Way to Save Image in CoreData :-


-(void)btnBarSave
{

if(!self.objinsurance)
    {
        objinsurance =(Insurance *)[appDelegate.objHelper createObjectForEntity:Entity_Insurance];
    }

objinsurance.name = txtName.text;
        objinsurance.insurance_id = txtInsuranceId.text;
   
        if (imageView.image != nil) {
            
            UIImage *image = imageView.image;
            
            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
            NSString *strUser = [prefs valueForKey:@"username"];
            [strUser retain];
            NSString * strUserLocal = [objinsurance.insurance_id stringByAppendingString:@".png"];
            
            NSString *imagePath = [[appDelegate applicationDocumentCacheDirectory] stringByAppendingPathComponent:strUserLocal];
            NSLog(@"Path by Image To SAVE :::::>>>%@<<<<<<",imagePath);
            
            NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)];
            
            if(data != nil) {
                [data writeToFile:imagePath atomically:YES];
                NSLog(@">>>>>>>>>>>>>>>>>>> Image Going To Write <<<<<<<<<<<");
                
               objinsurance.picture = imagePath;
            }
            else
            {
                [[NSFileManager defaultManager] removeItemAtPath:imagePath error:NULL];
                NSLog(@">>>>>>>>>>>>>>>>>>>   Error Writing Image File to Directory      <<<<<<<<<<<");
            }
            
        }else{
            
            NSLog(@"nil");
        }
       
        [appDelegate saveContext];
        [appDelegate showAlertWithTitle:@"" message:@"Data Saved Successfully"];

}


To View Image from CoreData for edit:-


{
txtName.text = objinsurance.name;

  NSData *data = [NSData dataWithContentsOfFile:objinsurance.picture];
    imageView.image = [UIImage imageWithData:data];
}


DBHelper Classes :-


DBHelper.h


#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface DBHelper : NSObject {

}


DBHelper.m


@implementation DBHelper

AppDelegate *appDelegate;

-(id) init {
    
    if((self = [super init])) {
        appDelegate = [AppDelegate sharedAppDelegate];
    }
    return self;
}


#pragma mark -
#pragma mark - Creating Object

-(id)createObjectForEntity:(NSString *)entityName
{
    if (entityName!=nil || [entityName isEqualToString:@""])
    {
        return [NSEntityDescription
                insertNewObjectForEntityForName:entityName
                inManagedObjectContext:appDelegate.managedObjectContext];
    }
    else{
        return nil;
    }
}
-(id)createObjectForEntity:(NSString *)entityName context:(NSManagedObjectContext *)aContext
{
    if (entityName!=nil || [entityName isEqualToString:@""])
    {
        return [NSEntityDescription
                insertNewObjectForEntityForName:entityName
                inManagedObjectContext:aContext];
    }
    else{
        return nil;
    }
}


#pragma mark -
#pragma mark - Retrive Object

-(NSMutableArray*) getObjectsforEntity:(NSString *)strEntity ShortBy:(NSString *)strShort isAscending:(BOOL)ascending predicate:(NSPredicate *)predicate
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:strEntity inManagedObjectContext:appDelegate.managedObjectContext];
    [fetchRequest setEntity:entity];
    
    [fetchRequest setIncludesPendingChanges:NO];
    
    if (strShort)
    {
        NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:strShort ascending:ascending];
        
        [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
        [sort release];
    }
    if (predicate)
    {
        [fetchRequest setPredicate:predicate];
    }
    NSError *error;
    NSMutableArray *arrAllObjects = (NSMutableArray*)[appDelegate.managedObjectContext executeFetchRequest:fetchRequest error:&error];
[arrAllObjects retain];
    
    [fetchRequest release];
    
    return arrAllObjects;
}

#pragma mark -
#pragma mark path for Document Directory 

-(NSString *)applicationDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}