Я работаю над приложением, которое записывает данные в .plist из представления, а затем извлекает его, чтобы заполнить некоторые UILabels в другом представлении.Я делал это несколько раз в прошлом, и он отлично работал как на устройстве, так и на симуляторе.На этот раз он отлично работает на симуляторе, но не на устройстве.Я просмотрел все соединения и код, но просто не могу понять, почему он не работает.Я подозреваю, что по какой-то причине данные не находятся в конце пути к файлу, но если это не так, я не могу понять, почему это так.
Я также попытался очистить цели через меню, а также удалить и переустановить приложение на тестирующем устройстве в надежде, что это может исправить ситуацию, но не радость.
Кто-нибудь может подсказать, почему у меня возникла эта проблема и как ее исправить?Именно поэтому он работает на симуляторе, а не на телефоне, что меня смущает, особенно когда в прошлом я использовал один и тот же код для создания полнофункциональных приложений.Я использую xCode 4 и тестирую на iphone 4:
Код выглядит следующим образом.Сначала я проверяю, есть ли данные в конце пути к файлу данных, например:
- (NSString *)dataFilePath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirctory = [paths objectAtIndex:0];
return [documentsDirctory stringByAppendingPathComponent:memberDetails];
}
Затем в viewWillAppear я получаю данные и использую их для заполнения UIlabels в представлении.Немногие из меток являются видимыми или невидимыми на основании данных, которые они содержат.ViewWillAppear выглядит следующим образом:
-(void)viewWillAppear:(BOOL)animated
{
// Check data file path and if it exists, load data from there.
NSString *filePath = [self dataFilePath];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
///All of the following handles the reloading of data from the plist.
NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
memName.text = [array objectAtIndex:0];
memAddress.text = [array objectAtIndex:1];
memOccupation.text = [array objectAtIndex:2];
sherex.text = [array objectAtIndex:3];
if ([[array objectAtIndex:3] isEqualToString:@"winstonwinston"]) {
cvName.hidden = NO;
memName.hidden = NO;
cvAddress.hidden = NO;
memAddress.hidden = NO;
cvOccupation.hidden = NO;
memOccupation.hidden = NO;
sherex.hidden = YES;
altText.hidden = YES;
}
else {
cvName.hidden = YES;
memName.hidden = YES;
cvAddress.hidden = YES;
memAddress.hidden = YES;
cvOccupation.hidden = YES;
memOccupation.hidden = YES;
sherex.hidden = YES;
altText.hidden = NO;
}
[array release];
}
[super viewWillAppear:animated];
}
Возможно, стоит отметить одну вещь: оператор if / else, похоже, не работает и на устройстве.Другими словами, все в представлении видно.Мне кажется, это может указывать на то, что проблема может заключаться не в данных, так как если бы можно было определить, существует или нет элемент с именем «winstonwintson» или нет, и соответственно отобразить скрытые / отображающие элементы представления.
Если у кого-то есть понимание, пожалуйста, помогите!Я полностью застрял.Спасибо, что нашли время, чтобы прочитать это.