Лексическая ошибка или ошибка препроцессора (файл UIKit/UIKit.h не найден)

Я прочитал другой вопрос, касающийся лексических проблем и проблем с препроцессором, и я попытался использовать то, что помогло решить их проблемы. К сожалению, ни одно из этих решений не помогло решить проблему. Эта ошибка возникла из ниоткуда, и я не уверен, что я могу сделать, кроме того, что прочитал, чтобы исправить это. Пожалуйста помоги!

Вот код, в котором я получаю ошибку:

#import <UIKit/UIKit.h>

@interface scanshootViewController : UIViewController
<UINavigationControllerDelegate, UIImagePickerControllerDelegate>

{
    IBOutlet UIImageView *imageView;
    UIImagePickerController *imagePicker;

}

@property (nonatomic, retain) UIImageView *imageView;

-(IBAction) btnClicked:(id) sender;

@end

person Maple    schedule 20.08.2012    source источник
comment
Какая именно ошибка и какой инструмент ее выдает?   -  person D.Shawley    schedule 20.08.2012
comment
И UIKit.framework все еще настроен для проекта Xcode?   -  person trojanfoe    schedule 20.08.2012
comment
@ D.Shawley: Это именно та ошибка, которая возникает, когда я запускаю компилятор. Лексическая ошибка или ошибка препроцессора (файл UIKit/UIKit.h не найден!)   -  person Maple    schedule 20.08.2012
comment
@trojanfoe: Да, он все еще настроен для проекта Xcode. Я также читал, чтобы удалить, а затем снова добавить его, что я и сделал. Это не помогло.   -  person Maple    schedule 20.08.2012
comment
@ Coder404: Да, если быть точным, я использую Xcode 4.4. Есть ли ошибка или, может быть, обновление, которое я должен получить из магазина приложений, чтобы исправить это?   -  person Maple    schedule 20.08.2012


Ответы (5)


Попробуйте удалить папку «Производные данные» для вашего приложения — вы можете найти ее на вкладке «Проекты» органайзера. Один вы попадаете туда в поисковике, закрываете проект в Xcode, удаляете папку, снова открываете проект и пытаетесь собрать. Если это не поможет, закройте проект, удалите все каталоги в файле проекта, которые начинаются с вашего идентификатора пользователя (или просто переименуйте их), снова откройте, перестройте.

РЕДАКТИРОВАТЬ: еще несколько предложений

1) Посмотрите на цель «Использовать стандартный поиск в каталоге заголовков системы» и убедитесь, что это ДА.

2) В вашем файле .pch у вас должно быть что-то вроде:

#import <Availability.h>

#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#endif

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>

Попробуйте добавить "Hello" в строку от iteslf под OBJC, чтобы убедиться, что при сборке вы попадете сюда (и получите фатальную ошибку) - это докажет, является ли OBJC определенный.

3) Создайте совершенно новый проект - iOS one view. Убедитесь, что он собирается и работает (если Xcode не заблокирован). Затем откройте этот проект Build Settings рядом с вашими проектами и просмотрите строку за строкой, чтобы увидеть, что отличается.

4) Если ничего не помогает, переместите свой проект в другой каталог, создайте новый, а затем добавьте все файлы обратно в новый проект. Очевидно, это худшее из возможных решений.

person David H    schedule 20.08.2012
comment
Привет, Дэвид, я попробовал то, что ты предложил, и, к сожалению, у меня это не сработало. Я все еще получаю эту глупую ошибку. - person Maple; 20.08.2012
comment
Привет, Дэвид, в файле .pch у меня тоже есть ошибка, прежде чем я даже добавляю привет. Думаю, я просто сделаю то, что вы сказали, и создам новый проект. Спасибо, в любом случае. : ( - person Maple; 20.08.2012

Перейдите в папку Frameworks в вашем проекте, щелкните правой кнопкой мыши UIKit.Framework > показать в Finder.

Если папка Headers пуста, это означает, что у вас нет правильных файлов, я только что понял, что некоторые Clean Apps удаляют файлы .h с вашего компьютера (... да, хотите верьте, хотите нет);

Решение:

1) Скопируйте все папки iPhoneOS.platform и iPhoneSimulator.platform из другой установки XCode.

2) Переустановите XCode (упс...)

person Guillermo Hernandez    schedule 01.12.2013
comment
Это случилось и со мной. Не уверен, что вызывает это, хотя. - person mosca1337; 12.08.2014

Я столкнулся с той же проблемой. Причина заключалась в том, что я случайно установил «Базовый SDK» в «Настройки сборки» на «Текущая OS X» вместо «Последняя версия iOS». Когда я вернул его на «Последнюю версию iOS», ошибка сборки исчезла.

person thijsai    schedule 31.01.2013

У меня была такая же проблема с целью фреймворка, построенной для iOS. Я решил это, установив «Base SDK» в моих конфигурациях сборки на что-то разумное.

создать конфигурацию

person kubi    schedule 28.12.2015

FWIW, у меня была аналогичная проблема, когда я пытался улучшить код, найденный на github.

Я не понимал, почему он не мог найти UIColor и не мог #import <UIKit/UIKit.h>, пока не понял, что он собирается для OSX, а не для iOS!!!

Поэтому я поместил это в начало файла .h:

#import "TargetConditionals.h"

#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
  #import <UIKit/UIKit.h>
  #define HXColor UIColor
#else
  #import <Cocoa/Cocoa.h>
  #define HXColor NSColor
#endif

@interface HXColor (HexColorAddition)

ХТН

person duthen    schedule 27.03.2016