#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
}