2012-06-14 14 views
7

Próbuję użyć SDWebImage w mojej aplikacji na iPhone'a. Wykonałem samouczek krok po kroku, aby zainstalować SDWebImage w moim projekcie Xcode.Nie znaleziono pliku SDWebImage/UIImageView + WebCache.h

Kiedy próbuję zbudować Moje app Dostaję następujący błąd:

Lexical or Preprocessor Issue 
'SDWebImage/UIImageView+WebCache.h' file not found 

Czy ktoś mógłby mi pomóc rozwiązać ten problem?

Odpowiedz

2

Sprawdź, czy plik został poprawnie połączony z plikiem w pakiecie, czy nie.

+0

Dodałem docelowa Depencencies i połączyć Binary z bibliotekami, jak pokazano w poradniku instalacji. Ale nadal pojawia się ten błąd: – Lizard

+0

http://stackoverflow.com/questions/10027586/lexical-or-preprocessor-issue-myviewcontroller-h-file-not-found –

+8

Rozwiązany przez dodanie $ (SRCROOT)/SDWebImage do nagłówka Ścieżka wyszukiwania – Lizard

3

Odpowiedź @Lizard uratowała mój dzień!

$(SRCROOT)/SDWebImage to Header Search Path

Mówiąc dokładniej, należy dodać tę konfigurację do celu, a nie do widoku projektu.

+0

Dodałem do projektu, więc to nie ma znaczenia. Jednak musiałem użyć innej ścieżki "$ (SRCROOT) /../ SDWebImage", ponieważ nie mam SDWebImage w folderze projektu, ale powyżej (ten sam poziom co projekt). – JOM

+0

@JOM zrobił to za Ciebie? – rodchile

+0

Pewnie, szczęśliwy użytkownik teraz :) – JOM

16

znacznie czystszym „zainstalować” od SDWebImage byłyby następujące:

  1. Drag folderze SDWebImage z Findera w projekcie Twojego Xcode za
  2. na dowolnym pliku .m gdzie chcesz używać go dodać: #import "UIImageView+WebCache.h"

    (i każdy inny komponent SD potrzebne)

    zamiast czego prawdopodobnie nie: #import <SDWebImage/UIImageView+WebCache.h>

Nie wymaga to manipulowania nagłówkiem projektu i działa tak jak jest.

+0

Doskonała wskazówka;) – bruno

+0

Wygląda na to, że zadziałało dla mnie, dzięki! –

+0

idealne! rozwiązany problem :) –

1

Dostawałem również ten problem. Rozwiązaniem dla mnie było dodanie SDWebImage.framework zamiast dodawania wszystkich plików w moim projekcie. Oto lista kontrolna, aby upewnić się, że wszystko zostało skonfigurowane zgodnie z sugestią właściciela here.

pobierania i Dodaj ramy

Krok 1: Pobierz i rozpakuj najnowszą wersję tutaj: https://github.com/rs/SDWebImage/wiki/Download-Complied-Framework

Krok 2: prawym przyciskiem myszy na nawigatorze projektu i wybierz „Dodaj pliki do” Twój projekt ": W oknie dialogowym wybierz SDWebImage.framework i zaznacz pole wyboru" Kopiuj elementy do grupy docelowej "(jeśli to konieczne)" pole wyboru

Dodaj zależności

W ustawieniach systemu docelowego ty application app Projektu, znajdź sekcję „budować fazą” i otwórz „Link binarne z bibliotekami” blok: Kliknij przycisk „+” ponownie i wybierz „ImageIO.Ramy”

Dodaj Linker Flag

Otwórz "Build Settings", w zakładce "Łączenie sekcji" znajdź "Inne Flagi łącznik" ustawienie i dodać "-ObjC" flag

nagłówki Importprzedsiębiorstwa źródła plików

#import <SDWebImage/UIImageView+WebCache.h> 

należy budować teraz bez problemu.

2

Zastosowanie

#import "UIImageView+WebCache.h" 

zamiast

#import <SDWebImage/UIImageView+WebCache.h> 

będzie rozwiązać.

10

Może się zdarzyć, że:

rozpakować te ramy, nazwa katalogu mogą być następujące: „SDWebImage-3.3.framework”

Jeśli zaimportować Projekt ten sposób powoduje błąd „ramową SDWebImage nie znaleziono "podczas kompilacji.

Potrzebujesz zmienić nazwę, usuwając "-3.3". Byłoby: "SDWebImage.framework"

Wymuszenie przemianowania z Xcode powoduje błąd, który nieoczekiwanie zamyka IDE. Zmienia nazwę z Findera i ponownie dodaje strukturę.

Mam nadzieję, że to przydatne ...

5

nie życzyłbym najgorszemu wrogowi frustrację musiałem przejść, aby rozwiązać ten problem, ponieważ żadne z tych rozwiązań nie pomogło w moim konkretnym przypadku. Jeśli twój projekt został skompilowany wcześniej, wróciłeś do niego i ten błąd pojawił się znikąd, prawdopodobnie przeniesiesz go do jakiegoś nowego katalogu - przejdź do Ustawień konstrukcyjnych> Ścieżek wyszukiwania> w ścieżkach wyszukiwania ramowego usuń przestarzałą ścieżkę, utwórz nowy i ustawić go na "$ (SRCROOT)" (bez cudzysłowów) i zmienić domyślny "nierekursywny" na "rekursywny". Mam nadzieję, że to pozbawi kogoś cierpienia, które znosiłem.

1

Użycie #import <SDWebImage/UIImageView+WebCache.h> rozwiązało problem, ponieważ używałem Cocoapods jako frameworków (use_frameworks!).

+0

dzięki, to działało dla mnie. – prasad

1

miałem .xcodeproj i .xcworkspace plików i uruchomiony kod za pomocą .xcodeproj i dostał ten błąd, ale z .xcworkspace to działało dobrze