NSKeyedArchiver работает в симуляторе, но не на устройстве, iOS SDK

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

вот что у меня есть, как я уже сказал, он отлично работает в симуляторе, но не на устройстве, ведьма работает под управлением iOS 5.x Спасибо за помощь.

   NSFileManager *filemgr;
   NSString *docsDir;
   NSArray *dirPaths;

   filemgr = [NSFileManager defaultManager];

   // Get the documents directory
   dirPaths = NSSearchPathForDirectoriesInDomains(
                                               NSDocumentDirectory, NSUserDomainMask, YES);

   docsDir = [dirPaths objectAtIndex:0];

  //Build the path to the data file
  datafilePath = [[NSString alloc] initWithString: [docsDir 
                                                 stringByAppendingPathComponent:  @"data.archive"]];
   //  NSString *localPath = @"Documents/data.archive";
   //  datafilePath = [NSHomeDirectory() stringByAppendingPathComponent:localPath];

  // Check if the file already exists
  if ([filemgr fileExistsAtPath: datafilePath])
  {
    NSMutableArray *dataArray;
   // NSDictionary *stuff;

    dataArray = [NSKeyedUnarchiver 
                 unarchiveObjectWithFile: datafilePath];


    for(int i=0; i< [dataArray count]; i++){
    titlestring = [dataArray objectAtIndex:i ];
    detailsstring = [dataArray objectAtIndex:++i];

   // date = [dataArray objectAtIndex:2];


        [tabledata addObject:titlestring];
    [tablesubtitles addObject:detailsstring];

    }

   }





  }

это действие saveButton: как я уже сказал, я отлично работаю в симуляторе, просто ничего не делаю на устройстве, все отображается пустым.

if (i == 0) {

   // [userDefaults setObject:titlefield.text forKey: @"titlehomework"];
  // [userDefaults setObject:detailstextfield.text forKey:@"detailshomework"];

    NSMutableArray *contactArray;
   contactArray = [NSKeyedUnarchiver 
       unarchiveObjectWithFile: datafilePath];

   // contactArray = [[NSMutableArray alloc] init];
    [contactArray addObject:titlefield.text];
    [contactArray addObject:detailstextfield.text];

    [NSKeyedArchiver archiveRootObject: 
     contactArray toFile:datafilePath];

    // NSDictionary *stuff;



    }

person franklinexpress    schedule 27.02.2012    source источник
comment
Проверьте, помогает ли это.   -  person fbernardo    schedule 27.02.2012
comment
Было бы полезно, если бы вы точно описали, что не работает. Расскажите нам, что, по вашему мнению, должно произойти, что происходит на самом деле и что вы пробовали до сих пор.   -  person Caleb    schedule 27.02.2012
comment
Я смотрел на это, но у меня голова не получается, есть ли другие альтернативы? Спасибо за помощь   -  person franklinexpress    schedule 27.02.2012
comment
Код кодировки также будет полезен.   -  person fbernardo    schedule 27.02.2012
comment
Хорошо, я думаю, что я не создаю файл, datafilePath также создает файл? Отредактирую как можно скорее, но это в основном все, что у меня есть, я должен создать файл в делегате?   -  person franklinexpress    schedule 27.02.2012


Ответы (1)


Трудно ответить на вопрос, не зная, что происходит с ошибкой, но это может помочь вам узнать, что очень часто, когда люди получают код, работающий на симуляторе, но не на устройстве, проблема связана с именами файлов. Файловая система в iOS чувствительна к регистру, но файловая система MacOS X часто не чувствительна к регистру. Поэтому, если вы пытаетесь прочитать файл с именем «data.archive», но имя фактического файла - «Data.archive», он будет работать на симуляторе, но не на устройстве.

person Caleb    schedule 27.02.2012
comment
правильно, но я создаю файл в коде, будет ли телефон автоматически использовать заглавные буквы в имени файла? - person franklinexpress; 27.02.2012
comment
Калеб имеет в виду, что если вы сохраните файл как data.archive и прочитаете его как Data.archive, он будет работать в симуляторе, но не на реальном устройстве. - person Joris Weimar; 25.05.2012