Как написать NSString с .jpg для всех строк?

#xcode #nsstring

#xcode #nsstring

Вопрос:

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

У меня есть код, в котором мой ViewController имеет некоторый заголовок, и этот заголовок я использую для NSString . Затем я использую эту строку для поиска изображения с тем же именем. Но я не знаю, как настроить это расширение .jpg.

Вот мой код:

 - (void)viewDidLoad{

    [super viewDidLoad];
    NSString*imageName = [NSString stringWithFormat:(@"% .jpg", self.title)];
    UIImage*image = [UIImage imageNamed:imageName];
    [imageView setImage:image];
   NSLog(@"%", imageName);
}
  

Забавно, что моя строка NSLog не работает. Может быть проблема в моем методе prepareForSegue?:

 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
     if ([segue.identifier isEqualToString:@"Cell Segue"]) {
     ImageShowingViewController*ivc = segue.destinationViewController;
     ivc.title = [self.objects objectAtIndex:(self.tableView.indexPathForSelectedRow.row)];

  }
}
  

Когда я нажимаю на какую-либо ячейку в моем TableViewController, активируется push-переход и отображается мой второй ViewController. Эта часть кода работает нормально, но там нет строки NSLog, даже если моя загрузка viewDid была завершена. Но когда я смотрю на точку останова при запуске метода viewDidLoad и в строке NSLog, она показывает мне
«imageName __NSCFString * @»bread» 0x00000001095515f0

Любая помощь приветствуется.

Проблема решена. Это должно быть [NSString stringWithFormat:@»%@», self.title], а не [NSString stringWithFormat:(@»%@», self.title)]

Комментарии:

1. У вас NSLog та же проблема, что и раньше, так и должно быть NSLog(@"%@", imageName); .

2. Да, я понял. Большое спасибо за вашу помощь!

Ответ №1:

Использовать

 NSString *imageName = [NSString stringWithFormat:@"%@.jpg", self.title];
UIImage*image = [UIImage imageNamed:imageName];
[_image setImage:image];
  

stringWithFormat: следует использовать вместо stringWithString: . Кроме того, скобки не должны использоваться в выражении.

Кроме того, неясно, что [image setImage:image]; предполагается делать. Скорее всего, первое image — это просмотр изображения? Я обновил свой ответ, чтобы он отличался от загруженного изображения, но вам нужно будет определить, каким должно быть значение.

Комментарии:

1. Спасибо за помощь, но все равно не работает. Но если я переименую имя изображения без .jpg, это сработает. Даже если я напишу обратно .jpg

2. И я не знаю почему, но эта строка NSString ошибочна. Он пишет «Результат выражения неиспользуемый».

3. Я также обновил. И уже пробовал stringWithFormat раньше, но без изменений.

4. Вы изменили имя своего файла, чтобы удалить расширение .jpg, вы изменили его обратно, чтобы иметь расширение?

5. ДА. И чем это работает и с расширением. Но не работает, когда я помещаю это изображение в свои вспомогательные файлы. Удалить это расширение не проблема, если у вас есть 2 или 3 изображения, но у меня будет более 100 🙂

Ответ №2:

Отсутствует @

 - (void)viewDidLoad{

    [super viewDidLoad];
    NSString*imageName = [NSString stringWithString:(@"%@.jpg", self.title)];
    UIImage*image = [UIImage imageNamed:imageName];

    //[yourImageView setImage:image]; then set your UIImageViews image with this
}