2012-12-04 6 views
1

Nous avons développé l'application iPhone qui sera utilisée par les employés de la diff. organisations (en fait nous ne l'avons pas fait application d'entreprise, à la place, nous allons mettre cette application sur App Store pour la charge), Donc, ce que nous voulons, c'est quand la personne va installer l'application, et l'application ouvrira la première fois, pop up viendra là-bas en demandant l'URL d'entrée (qui sera l'URL pointe vers le serveur de cette organisation de personnes), Donc en passant par la logique de code, ce que je veux, c'est quand nous viendrons à la page de connexion dans la vue Je veux vérifier si l'URL est déjà stockée dans l'application ou non, si elle n'est pas stockée alors je vais donner cette pop-up demandant d'entrer l'URL, et si elle est stockée puis simplement je vais lui permettre d'entrer les informations de connexion.Comment stocker les données dans l'application iPhone

Mon problème est comment dois-je stocker cette URL et où devrais-je stocker cette URL et comment devrais-je vérifier si cela est déjà stocké ou non. J'ai essayé de stocker cette URL avec ... Où urlfield.text est l'URL que je vais stocker.

NSError *error; 
    // For error information 

    // Create file manager 
    fileMgr = [NSFileManager defaultManager]; 

    // Point to Document directory 
    documentsDirectory = [NSHomeDirectory() 
          stringByAppendingPathComponent:@"Documents"]; 
    fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath]; 
    // File we want to create in the documents directory 
    // Result is: /Documents/file1.txt 
    filePath = [documentsDirectory 
       stringByAppendingPathComponent:@"file1.txt"]; 
    str=urlField.text; 
    // Write the file 
    [str writeToFile:filePath atomically:YES 
      encoding:NSUTF8StringEncoding error:&error]; 

    // Show contents of Documents directory 
    NSLog(@"Documents directory: %@", 
      [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:&error]); 

et je vérifie si son là ou ne pas utiliser ..

// fileExists is a BOOL variable 
      fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath]; 
     NSLog(@"Boolean value:=%d",fileExists); 
     if (fileExists == 0) 
     { 
      ....... 
      ........ 
     } 

, mais chaque fois que je passe l'application retourne le « 0 » (signifie que les fileExists variables BOOL). s'il vous plaît quelqu'un me dira la façon d'accomplir ma tâche, je me retrouve à essayer tous les côtés avec cette logique.

+0

Vérifiez la chaîne "filePath" avant de vérifier si le fichier existe ou non. –

+0

Avez-vous défini la chaîne "filePath" avant de vérifier? –

+0

@ anusha: merci pour vos mises à jour, en fait je l'ai résolu avec l'aide de "NSUserDefaults" – iShwar

Répondre

5

d'abord sur de vérifier que si l'utilisateur ouvre l'application premier temps i vérifie la valeur pour le premier objet de NSUserDefault comme

//defaults is a object of NSUserDefault 
NSString *URLEntered =[defaults objectForKey:@"URLISENTERED"]; 
if (!URLEntered) { 

     [defaults setValue:@"0" forKey:@"URLISENTERED"]; 
    } 

la URLEntered renvoie null dans un premier temps, de sorte que i définir la valeur 0 Key URLISENTERED

et je permis aux utilisateurs d'entrer l'URL de là serveur organisations, dans ce que je mis le Valu pour URLISENTERED clé comme 1, comme

[defaults setValue:@"1" forKey:@"URLISENTERED"]; 

et en même temps je prends un objet de plus de NSUserDefault pour stocker l'URL du serveur et emmagasinés que, comme

// defaultURL is the object of NSUserDefault, and main URL is the URL of server user entered 

[defaultURL setValue:mainURL forKey:@"mainURL"]; 

donc suivant lorsque l'utilisateur logins à nouveau à l'application de la valeur de

[defaults objectForKey:@"URLISENTERED"] 

est 1 que nous fixons et que le temps que je naviguais utilisateur à l'écran de connexion directement, et avoir récupéré la valeur de mainURL en utilisant

mainURL=[defaultURL objectForKey:@"mainURL"]; 

et utilisé cette URL pour une utilisation ultérieure.

0

En fait, si vous voulez vérifier l'URL sur le client. vous pouvez accomplir cette tâche en utilisant la base de données sqlite. J'utilise le NSUserDefaults pour cela.

+0

ya Mohd nous pouvons faire l'utilisation de sqlite mais je l'ai trouvé un peu compliqué car je ne suis pas très familier avec sqlite, donc j'ai utilisé le NSUserDefault et c'est fait. – iShwar

1

Si je comprends bien votre problème peut utiliser votre NSUserDefault ou plist

  1. En utilisant plist:

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"plist.plist"]; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    
    if (![fileManager fileExistsAtPath: path]) 
    { 
        path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"plist.plist"] ]; 
    } 
    
    NSMutableDictionary *data; 
    NSString *userURL ; 
    
    if ([fileManager fileExistsAtPath: path]) 
    { 
          data = [[NSMutableDictionary alloc] initWithContentsOfFile: path]; 
          //To retrieve the data from the plist 
          NSMutableDictionary *savedURL= [[NSMutableDictionary alloc] initWithContentsOfFile: path]; 
    
    userURL = [savedURL objectForKey:@"USER_URL"]; 
    NSLog(@"%@",userURL); 
         // present login detail or more stuff with userURL 
    } 
    else 
    { 
    
        userURL = // prompt for user to enter URL 
        data = [[NSMutableDictionary alloc] init]; 
        [data setObject:[NSNumber numberWithInt:value] forKey:@"USER_URL"]; 
        [data writeToFile: path atomically:YES]; 
    
    } 
    
  2. En utilisant NSUserDefault:

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *userURL = [defaults objectForKey:@"USER_URL"]; 
    if(userURL) { 
         NSLog(@"%@",userURL); 
         //present login detail or more stuff with userURL 
    } 
    else { 
    userURL = // prompt for userURL 
    [defaults setObject:userURL forKey:@"USER_URL"]; 
    } 
    
Questions connexes