2012-12-04 2 views
1

Мы разработали приложение iphone, которое будет использоваться сотрудниками diff. (на самом деле мы не сделали это корпоративным приложением, вместо этого мы собираемся разместить это приложение в магазине приложений за плату), Так что мы хотим, когда пользователь установит приложение, и приложение откроется впервые, одно появится всплывающее окно с просьбой ввести URL-адрес (который будет URL-адресом на сервере этой организации лиц). Поэтому, проходя через логику кода, я хочу, когда мы перейдем на страницу входа в представление load Я хочу проверить, сохранен ли URL-адрес в приложении или нет, если он не был сохранен, я дам вам всплывающее окно с запросом на ввод URL-адреса, и если оно будет сохранено, просто я разрешу ему ввести данные для входа.Как хранить данные в приложении iPhone

Моя проблема заключается в том, как сохранить этот URL-адрес и где я должен хранить этот URL-адрес, и как я должен проверить, уже ли он сохранен или нет. Я попытался сохранить этот URL с ... Где urlfield.text - это URL, который я собираюсь хранить.

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

и я проверить ли его или нет, используя ..

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

, но каждый раз, когда я запускаю приложение он возвращает «0» (означает переменную FileExists BOOL). , пожалуйста, кто-нибудь скажет мне, как выполнить мою задачу, я в конечном итоге пытаюсь использовать все стороны этой логикой.

+0

Проверьте строку «filePath» перед проверкой файла или нет. –

+0

Вы установили строку «filePath» перед проверкой? –

+0

@ anusha: спасибо за ваши обновления, на самом деле я решил его с помощью «NSUserDefaults» – iShwar

ответ

5

Я использую NSUserDefaults для этого.

первым при для проверки того, является ли пользователь открывает приложение первый раз, когда я проверить значение для первого объекта NSUserDefault как

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

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

URLEntered возвращает нуль в первый раз, так что я установить значение 0 для ключей URLISENTERED

и я позволил пользователям ввести адрес сервера там организаций, в том, что я установил Вал для ключа URLISENTERED как 1, как

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

и в то же время я взять еще один объект NSUserDefault для хранения URL сервера и хранится, что, как

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

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

так дальше, когда пользователь снова логины к приложению значение

[defaults objectForKey:@"URLISENTERED"] 

является 1, как мы установили, и это время я перемещаться пользователю войти в экран напрямую, и принес значение mainURL с помощью

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

и использовали этот URL для дальнейшего использования.

0

Фактически, если вы хотите проверить URL-адрес на клиенте. вы можете выполнить эту задачу, используя базу данных sqlite.

+0

ya Mohd мы можем использовать sqlite, но я нашел несколько сложным, поскольку я не очень хорошо знаком с sqlite, поэтому я использовал NSUserDefault и его выполнение. – iShwar

1

Как я понимаю вашу проблему ваш может использовать NSUserDefault или PLIST

  1. Использование 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. Использование 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"]; 
    } 
    
Смежные вопросы