Câu hỏi Lấy “tập tin không tìm thấy” trong Bridging Header khi nhập khung Objective-C vào dự án Swift


Tôi có một dự án Swift mà tôi đang cố gắng nhập các khung công tác dựa trên ObjC. Khung này nằm trong một thư mục theo đường dẫn của dự án và được tham chiếu bởi dự án trong Xcode. Nó cũng được thêm vào "Liên kết nhị phân với thư viện" trong trang 'Xây dựng giai đoạn' của dự án.

Tuy nhiên, vì một lý do nào đó, tôi dường như không bao gồm khung trong tệp Bridging-Header. Tôi nhận được lỗi sau đây:

BridgingHeader.h:5:9: error: 'Parse/Parse.h' file not found
#import <Parse/Parse.h>
        ^
<unknown>:0: error: failed to import bridging header 'BridgingHeader.h'

Những điều tôi đã kiểm tra:

  1. "Cài đặt Tiêu đề Tương thích Mục tiêu-C" được đặt thành "CÓ".
  2. Đường dẫn tìm kiếm tiêu đề bao gồm đường dẫn đến khung công tác.

Tôi chắc chắn rằng tôi đang thiếu một cái gì đó, vì vậy nếu có ai có bất kỳ manh mối, đó sẽ là tuyệt vời.


76
2017-12-16 01:23


gốc


tôi quên đặt đường dẫn thư viện vào Header Search Paths, trong trường hợp này câu hỏi đã giúp: D - Aishwat Singh


Các câu trả lời:


Đã tìm thấy giải pháp:

  • Cài đặt "Mục tiêu-C Bridging Header" (aka SWIFT_OBJC_BRIDGING_HEADER) phải được đặt ở cấp Mục tiêu và KHÔNG ở cấp Dự án. Đảm bảo xóa giá trị cài đặt ở cấp Dự án.

(với tôi, nó có vẻ giống như một lỗi Xcode, vì tôi không biết tại sao nó sửa chữa nó).


64
2018-01-18 06:26



Điều này thực sự kỳ lạ, tôi đã có lỗi tương tự và nó quay ra tôi đã có tiêu đề được xác định ở cấp dự án. Mặc dù tôi đã có nó được xác định ở cấp mục tiêu, tôi đã phải loại bỏ nó khỏi cấp dự án để cho phép các khung bên thứ ba được thêm vào. Nó chắc chắn có vẻ như đó là một lỗi Xcode. - Jojodmo
Tôi đã làm điều đó, nhưng ở đây không hiệu quả. Sử dụng xcode 6.2. - Marco Almeida
@MarcoAlmeida, nếu bạn có mục tiêu kiểm tra, hãy thử xóa cài đặt "Mục tiêu-C Bridging Header" khỏi quá trình đó. Nó sẽ giúp. - Davlat Mirmanov
Không thể tin được. Cảm ơn bạn. - Darren
Xin chào! Có cùng một vấn đề ở đây: (Mặc dù nó không được giải quyết với phương pháp được mô tả ở trên ... - Michael K


Tôi có cùng một vấn đề. Tôi đã thay đổi tất cả hàng nhập khẩu của mình từ #import "HMSegmentedControl.h" đến #import <HMSegmentedControl/HMSegmentedControl.h> ví dụ.


51
2018-02-12 11:13



Không làm việc cho tôi - Hernan Arber
Cảm ơn. Nó làm việc cho tôi. :) - Muhammad Ibrahim
Để làm việc với cocoapods, điều này là cần thiết. Trong tiêu đề Bridging không bao giờ nhập một nhóm như #import "abc.h" user #import <abc / abc.h> Thumbs up. - NaXir
Bạn là thần! Cảm ơn rất nhiều vì điều này. - Alper
Cảm ơn rất nhiều nó đã làm việc !! - Venu Gopal Tewari


Tôi đã phải thêm lib thư mục trong Đường dẫn Tìm kiếm của Người dùng:

test target settings - user header search path

Trong trường hợp của tôi lib thư mục chứa .a-tệp thư viện và một số tệp tiêu đề. Chúng được bao gồm trong tệp tiêu đề cầu nối. Tuy nhiên, trình biên dịch nhanh chóng sẽ không tìm thấy chúng. Chỉ khi tôi thêm ${PROJECT_DIR}/lib đến Đường dẫn tìm kiếm tiêu đề người dùng, nó đã xây dựng mục tiêu thử nghiệm.

(Tôi đang sử dụng Xcode 6.2 trên Mavericks 10.9.5)


21
2018-04-27 18:02



Tôi có thể giải quyết vấn đề này bằng cách thêm Pods / * vào Đường dẫn Tìm kiếm Tiêu đề của mục tiêu chính. Thật thú vị, tôi không có vấn đề này trước khi thêm Swift framework làm phụ thuộc vào mục tiêu của tôi. Xcode 7 beta 6. - bizz84
Đây chính là điều đã làm cho tôi. Tôi có một khuôn khổ bao gồm trong dự án của tôi có chứa thư viện (.a). Tôi đã phải tạo một đường dẫn tìm kiếm đến các tiêu đề cho thư viện trong Đường dẫn Tìm kiếm Tiêu đề Người dùng. - Chris Livdahl
Cũng đã phải nhập khẩu Pods / thư mục thư viện, cảm ơn bạn rất nhiều! - thibaut noah


Chúng tôi đã gặp thông báo lỗi tương tự, với nguyên nhân hoàn toàn khác.

Thiết lập:

  • Mục tiêu ứng dụng, tất cả mã Obj-C
  • Mục tiêu Kiểm tra đơn vị với một trường hợp thử nghiệm nhanh chóng và tiêu đề chuyển tiếp đề cập đến mã ứng dụng

Khi chúng tôi thêm trường hợp thử nghiệm nhanh thứ hai, sau khi máy sạch sẽ (hoặc trên máy tính của đồng đội), chúng tôi đã thấy lỗi này khi xây dựng mục tiêu thử nghiệm đơn vị.

Nó đã được cố định bằng cách thêm một lớp Obj-C giả vào mục tiêu thử nghiệm đơn vị.


18
2018-03-06 23:30



Cảm ơn bạn. Điều này hoàn toàn làm việc mặc dù hoàn toàn không có ý nghĩa. - Curtis Steckel
Tôi đã có thể xóa lớp Obj-C giả sau đó. Đoán của tôi là một tác dụng phụ của giải pháp này là tạo ra một tiêu đề bắc cầu thử nghiệm đích cụ thể, đến lượt nó (tôi nghi ngờ) làm cho Xcode bỏ qua tiêu đề cầu nối của ứng dụng máy chủ. - clozach
Phụ lục ở trên: sau khi thực hiện xây dựng sạch, tôi bắt đầu nhận được lỗi phân đoạn 11 trong khi biên dịch. Sau một số thử nghiệm và lỗi, có vẻ như tệp .m giả phải có mặt, nhưng nó có thể trống rỗng. Điên cuồng. - clozach
Thêm một lớp objc giả vào mục tiêu thử nghiệm của tôi, sửa nó cho tôi! - neoneye


Điều này bằng cách nào đó đã làm các trick cho tôi:

  • Dự án sạch
  • Thư mục xây dựng sạch
  • Khởi động lại Xcode

4
2017-08-04 15:11



Đừng đi kèm với câu trả lời chung chung không trúng và thử các bức ảnh. - Nico
Thủ thuật nhấn và thử đặc biệt này đòi hỏi nỗ lực rất ít nên bạn không nên làm tổn thương khi thử nghĩ về các giải pháp khác. ;) - Hlung


Cũng hơi lạ của nó nhưng tôi đoán bạn phải thêm một nguồn lực vào giai đoạn "Sao chép tài nguyên bó" của mục tiêu thử nghiệm của bạn để làm cho nó tải tất cả các tiêu đề từ mục tiêu ứng dụng chính của bạn. Trong trường hợp của tôi, tôi đã thêm main.storyboard và nó đã chăm sóc lỗi.

enter image description here


3
2018-04-28 16:20



Không có ý tưởng, nhưng nó làm việc cho tôi. - YSR fan
Bảng phân cảnh ???? Cách đó liên quan đến tiêu đề bắc cầu ... - Alix


Lỗi này xuất hiện khi cài đặt với Cocoapods thư viện CocoaImageHashing. Vấn đề là đường dẫn tìm kiếm sai. Ở cấp độ Mục tiêu, trong Cài đặt Xây dựng -> Đường dẫn Tìm kiếm -> Đường dẫn Tìm kiếm Tiêu đề, đường dẫn tương ứng với các thư mục không tồn tại, ví dụ: "$ {PODS_ROOT} / Headers / Public / CocoaImageHashing", khi cấu trúc thư mục Tiêu đề / Công khai / không tồn tại. Tôi đã thêm đường dẫn $ {PODS_ROOT} / CocoaImageHashing và lỗi biến mất.


3
2018-02-23 11:09





Tôi đã có một vấn đề và cố định nó sau khi dành 2 giờ để tìm. Môi trường của tôi như sau:

cocoapod 0.39.0

nhanh chóng 2.x

XCode 7.3.1

Các bước:

  1. đường dẫn dự án: project_name / project_name / your_bridging_header.h
  2. Trong phần Swift tại Build Setting, Objective-C Bridging Header nên là: project_name / your_bridging_header.h
  3. Trong your_bridging_header.h, thay đổi tất cả các khai báo từ .h đến #import
  4. Trong lớp đang được sử dụng your_3rd_party. Khai nhập your_3rd_party

2
2018-05-16 10:31



Câu trả lời của bạn là chính xác chỉ cần thêm câu trả lời @jamesthakid ở điểm thứ ba để làm cho nó rõ ràng hơn. Làm việc cho tôi cảm ơn. - NaXir
Chính xác những gì bạn có nghĩa là "thay đổi tất cả các khai báo từ .h để #import"? - Chris Gunawardena


Nếu giúp đỡ bất cứ ai.

Trong trường hợp của tôi tập tin obj-c của tôi đã được thêm vào có một thư mục tham khảo (các thư mục màu xanh trong xcode) và tiêu đề không thể tìm thấy chúng. Chỉ cần thêm các tập tin, không phải là thư mục, từ công cụ tìm đến xcode và giải quyết.


2
2017-07-13 22:44