Xcode 6 Bug: คลาสที่ไม่รู้จักในไฟล์ Interface Builder


600

ฉันอัปเกรดเป็น Xcode 6 เบต้า 4 และตอนนี้แอปของฉันขัดข้องด้วยข้อความอย่างต่อเนื่อง

คลาส X ที่ไม่รู้จักในไฟล์ Interface Builder

มันล้มเหลวเพราะ Xcode ไม่สามารถหาคลาสที่กำหนดเองของฉันที่ฉันได้เชื่อมโยงไว้ในสตอรีบอร์ดของฉัน

ฉันคิดว่าทุกอย่างเชื่อมโยงอย่างถูกต้อง ตัวเลือกอื่นของฉันเท่านั้นที่จะลบไฟล์สตอรี่บอร์ดทั้งหมดและเริ่มจากศูนย์เนื่องจากอาจเสียหายอย่างใด

แก้ไข: ฉันอยากจะเพิ่มว่าฉันพยายามทำความสะอาด, จำลองการติดตั้งใหม่, messing กับระยะการสร้าง ฯลฯ ไม่มีการทำงานที่


สำเนาซ้ำที่เป็นไปได้ของstackoverflow.com/questions/3416269/…
Bouke

1
@ ImreKelényiคุณพูดถูก เรื่องนี้เกิดขึ้นกับฉันอีกครั้งเมื่อเร็ว ๆ นี้หลังจากทำสิ่งที่คุณเพิ่งอธิบาย
Epic Byte

นี่ใช้งานได้สำหรับฉันstackoverflow.com/questions/1725881/…
vrunoa

มันผิดพลาดสำหรับฉันตรวจแก้จุดบกพร่องไปที่องค์ประกอบควบคุม ดูคอนโทรลเลอร์> ตัวตรวจสอบตัวตน> คลาสที่กำหนดเอง> คลาส ลบออกหากไม่ได้กำหนดคลาสนั้น
mavericks

9
โปรดทราบ! "ข้อผิดพลาด" นี้สามารถเกิดจากต้นกำเนิดที่แตกต่างกัน หากคำตอบที่ยอมรับไม่ได้ผลสำหรับคุณให้เลื่อนลงแล้วลองคำตอบต่อไป คำตอบที่ถูกต้องสำหรับสถานการณ์ของฉันคือคำตอบที่ 5
Jacksonkr

คำตอบ:


1454

ฉันแก้ไขปัญหานี้เมื่อฉันพิมพ์คำถาม ฉันคิดว่าฉันตอบคำถามของฉันและฝากไว้ที่นี่สำหรับใครก็ตามที่อาจประสบปัญหานี้เมื่อใช้ Xcode 6 beta 4

ในการแก้ไขปัญหานี้คุณต้องเลือกวัตถุคลาสแบบกำหนดเองของคุณใน Storyboard (ซึ่งรวมถึงมุมมองที่กำหนดเองใด ๆ แม้แต่ตัวควบคุมมุมมองแบบกำหนดเองเอง)

จากนั้นเมื่อเลือกวัตถุเหล่านั้นให้เปิดตัวตรวจสอบตัวตนและภายใต้ "คลาสที่กำหนดเอง" คุณจะเห็นตัวเลือกโมดูล คลิกภายในกล่องข้อความโมดูลแล้วกด Enter

แค่นั้นแหละ! โมดูลปัจจุบันสำหรับวัตถุที่กำหนดเองทั้งหมดของฉันต้องถูกตั้งค่าภายในอย่างไม่ถูกต้องใน Xcode 6 เบต้า 4 แต่ไม่มีสิ่งบ่งชี้ที่มองเห็นได้ในตัวตรวจสอบ

โปรดทราบว่าหากกด Enter ภายในกล่องข้อความโมดูลไม่ทำงานให้ลองเลือกลูกศรไปทางขวาและเลือกโมดูลปัจจุบันของคุณด้วยตนเองจากนั้นล้างกล่องข้อความและกด Enter คุณสามารถลองกด enter ภายในกล่องข้อความของชั้นเรียน (แม้ว่านี่จะเป็นการแก้ไขปัญหาอื่น)

นี่คือภาพเพื่อทำให้สิ่งต่าง ๆ ชัดเจนยิ่งขึ้น: ป้อนคำอธิบายรูปภาพที่นี่


70
สำหรับฉันการคลิกภายใน "โมดูล" และการกด Enter ไม่ทำงานอย่างสม่ำเสมอ แต่การเลือกฟิลด์ "คลาส" (และการกด Enter) ทำงานได้ตลอดเวลา
Imre Kelényi

2
สำหรับฉันตั้งเป้าหมายไว้อย่างถูกต้อง แต่ชั้นเรียนยังไม่ปรากฏใน IB แต่ฉันสังเกตว่า "ตำแหน่ง" ของไฟล์แสดงเส้นทาง "สัมพันธ์กับโครงการ" แทนที่จะเป็น "สัมพันธ์กับกลุ่ม" การลบการอ้างอิงไฟล์และกลุ่มและการเพิ่มในโครงการรากทำงานให้ฉัน
knl

8
ว้าว. ขอบคุณสำหรับสิ่งนี้ฉันไม่คิดว่าจะไปถึงที่นั่นอย่างอื่น สิ่งนี้ได้แก้ไขปัญหาที่เกิดขึ้นหลังจากที่ฉันเพิ่มลง@objc(...)ในคลาส Swift ของฉัน
ndbroadbent

12
ปัญหานี้ยังคงมีอยู่ใน XCode 7.2 วิธีนี้ใช้ได้ผล
Tom Fast

3
นี่ยังคงเป็นปัญหาใน Xcode 8.3.1 ... ความอัปยศเช่นนี้
Sepehr Behroozi

99

บางครั้งพลาด Xcode customModule="AppName" customModuleProvider="target"

หากต้องการแก้ไขให้เปิดกระดานเรื่องราวเป็นซอร์สโค้ดและแทนที่บรรทัดนี้:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">

สำหรับสิ่งนี้:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
 customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">

7
ที่จริงแล้วในกรณีของฉันฉันต้องลบcustomModuleProviderแล้วข้อผิดพลาดก็หายไป
Maciej Swic

3
Guillermo ยังคงเกิดขึ้นใน Xcode เมื่อปลายเดือนมีนาคม!
Ed Manners

3
@MaciejSwic การลบcustomModuleProviderมันทำให้ฉันด้วยเช่นกันขอบคุณ!
Sakiboy

1
แล้วไฟล์ xib ล่ะ?
SleepsOnNewspapers

7
ยังคงเกิดขึ้น ... มันเป็นอย่างนี้ที่ทำให้ฉันอยากร้องไห้: (
ลูกา

72

ฉันมีปัญหานี้หลังจากเปลี่ยนชื่อคลาสที่รวดเร็ว แก้ไขได้โดยใช้ @objc คำสั่ง:

@objc(ForumTopicListViewController) class ForumTopicListViewController

4
สิ่งนี้ทำให้ฉันฉันมีปัญหา@objc class Xและเปลี่ยนไป@objc(X) class Xทำงาน
โจ

1
คุณยังสามารถลองลบข้อมูลที่ได้รับของคุณดูstackoverflow.com/questions/24039932/…
1760527

พบปัญหานี้หลังจากเปลี่ยนชื่อคลาส ViewController เริ่มต้นจากเทมเพลตโครงการมุมมองเดียว ฉันสงสัยว่ามีการใช้เวทมนตร์อะไรเพื่อไม่ให้มี@objc()คำสั่งสำหรับคลาส 'ดั้งเดิม' ViewController ...
Berend Klein Haneveld

ฉันไปฝั่งตรงข้าม ฉันได้ระบุชื่อโมดูลในไฟล์ Storyboard แต่ยังได้เพิ่ม @objc directive
WeZZard

1
ไม่ได้ผลสำหรับฉัน :( ไม่มีวิธีแก้ปัญหาของชื่อโมดูลที่ใช้งานได้
mythicalcoder

64

โครงการที่มีเป้าหมายหลายเป้าหมาย

ในกรณีของฉันฉันกำลังทำงานในโครงการที่มีหลายเป้าหมายและปัญหาคือ "การสืบทอดจากเป้าหมาย" ไม่ได้ถูกตรวจสอบ การเลือก "สืบทอดจากเป้าหมาย" ช่วยแก้ปัญหาของฉันได้

ป้อนคำอธิบายรูปภาพที่นี่


ขอขอบคุณที่โพสต์สิ่งนี้ แก้ไขปัญหาที่ฉันเห็นอย่างรวดเร็ว
JaredH

ฉันมีสถานการณ์ที่คล้ายกัน (XCode 9.4.1) ฉันสร้างแอป iOS ชื่อ FilesTestA ด้วย UIView ที่กำหนดเองชื่อ MxFileView (ซึ่งประกอบด้วย MxFileView.swift และ MxFileView.xib) จากนั้นฉันเพิ่มเป้าหมายอื่น: วิดเจ็ตวันนี้ ("FilesTestAWidget") โซลูชันสำหรับการใช้ MxFileView ในวิดเจ็ต: (1) class = "MxFileView"; (2) เลือก "รับโมดูลจากเป้าหมาย" (หรือยกเลิกการเลือกและป้อน "FilesTestAWidget" ด้วยตนเอง); (3) ในเป้าหมายแอปตรวจสอบให้แน่ใจว่าทั้ง MxFileView.swift และ MxFileView.xib รวมถึง FilesTestAWidget ในการเป็นสมาชิกเป้าหมาย
Kenster999

สิ่งนี้เกิดขึ้นกับฉันในโครงการใหม่จากเทมเพลตเริ่มต้นใน Xcode 10.1 (เป้าหมายแอป iOS เดียวและทดสอบเป้าหมาย 2 เป้าหมาย) ช่องทำเครื่องหมายไม่ถูกตรวจสอบสำหรับตัวควบคุมมุมมองที่กำหนดเองทั้งหมดของฉัน (และข้อความตัวยึดตำแหน่งคือ "ไม่มี") หลังจากผ่านและตรวจสอบช่องทำเครื่องหมายสำหรับตัวควบคุมมุมมองที่กำหนดเองทุกเรื่องในกระดานเรื่องราวของฉันปัญหาได้รับการแก้ไข
Mason

58

สิ่งนี้ได้ผลสำหรับฉัน ..

ตรวจสอบแหล่งที่รวบรวมของคุณไม่ว่าจะเพิ่มไฟล์นั้น (เช่น; ViewController.m) หรือไม่ในกรณีของฉันไฟล์ ViewController ไม่ได้ถูกเพิ่มดังนั้นมันจึงทำให้ฉันมีข้อผิดพลาด ..

ป้อนคำอธิบายรูปภาพที่นี่


@CarmenA คุณเท่านั้นที่เคยเพิ่ม '.m' Compile Sourcesไฟล์ไปยัง นี่เป็นโซลูชันที่ถูกต้อง (& เท่านั้น) สำหรับบางคน
Jacksonkr

ฉันลองวิธีแก้ปัญหาอื่น ๆ โดยไม่โชคดี นี่เป็นการหลอกลวง ด้วยเหตุผลบางอย่างแปลกประหลาดเป้าหมายหนึ่งหายไปไฟล์แหล่งหนึ่งที่ให้ฉันพอดี
galactikuh

สำหรับฉันเช่นกัน .. เกิดขึ้นเพราะบางคนได้รับการแก้ไขข้อขัดแย้ง
Eldhose

46

สิ่งนี้สามารถเกิดขึ้นได้ใน Xcode ใด ๆ ที่สูงกว่า 6.0 มันเกิดขึ้นกับฉันหลังจากเปลี่ยนชื่อคลาส ViewController บางส่วนในโครงการ Swift (แต่ฉันเดาว่ามันจะเกิดขึ้นกับ Obj-C ด้วย) คุณเพียงแค่ต้องเปิดตัวสร้างส่วนติดต่อไปที่ Identity Inspector ของ ViewController ที่เปลี่ยนชื่อคลาสเลือกคลาสแล้วกด Enter ที่จะกำหนดคลาสที่ถูกเปลี่ยนชื่อใหม่ให้เป็น ViewController ที่เลือกและยังรีเซ็ตค่าของโมดูลที่หายไปหลังจากเปลี่ยนชื่อคลาส

อัปเดตสำหรับ Xcode 8.1 (อาจเป็น 8.0 ด้วย):

Xcode 8.1 ขัดข้อง เรียบง่ายและน่ารำคาญเพียงเกิดปัญหาและไม่พิมพ์อะไรเลย ฉันกำลังไล่ล่าแฟนทอมผิดพลาดเป็นเวลาหนึ่งชั่วโมงเพื่อพบว่ามันเป็นสิ่งเดียวกัน - คลาสที่ไม่ได้รับมอบหมายใน IB หากคุณได้รับ phantom ล่มให้ตรวจสอบ IB อีกครั้งสำหรับคลาสที่ไม่ได้รับมอบหมายก่อน


ขอบคุณสำหรับสิ่งนี้. ปรากฏว่าการทำตามคำแนะนำของคุณทำให้ Xcode อัปเดตโมดูล (ภายใต้คลาสใน IB) จากไม่มีเป็นปัจจุบัน ฉันคิดว่าปัญหาคือการป้อนชื่อโดยไม่ต้องกดปุ่ม Enter ล้มเหลวในการเรียกการอัปเดตโมดูลโดย Xcode
rockiesGrizzly

สิ่งนี้ใช้ได้สำหรับฉัน ฉันเปลี่ยนชื่อคลาสของตัวควบคุมโดยไม่ตั้งใจดังนั้นจึงไม่มีอยู่อีกต่อไปเมื่อโหลดตัวควบคุมมุมมอง
Litehouse

32

บางครั้งคอนโทรลเลอร์ที่คุณกำลังให้สูญเสียสมาชิกภาพเป้าหมายจากแอปพลิเคชันปัจจุบัน ในกรณีนั้นการกด Enter บนช่อง "โมดูล" จะไม่ทำอะไรเลย ไปที่คอนโทรลเลอร์และตรวจสอบให้แน่ใจว่าได้ตั้งค่าสมาชิกภาพเป้าหมายเป็นแอพปัจจุบันแล้ว


นี่เป็นปัญหาสำหรับฉันเช่นกัน - มีหลายเป้าหมายที่นำไปสู่ไฟล์คลาสโดยไม่ตั้งใจไม่รวมอยู่ในเป้าหมายที่ฉันสร้าง
Ryan Kreager

ฉันรวมไฟล์และคิดถึงสิ่งนี้ในหนึ่งในเป้าหมายของฉันคำตอบที่ดี
Benjamin Jimenez

ข้อดีข้อหนึ่งผสาน pbx ทำให้ค่าสมาชิกภาพเป้าหมายแตกหัก
ระบบ

32

การเปิดใช้งานInherit Module From Targetใช้โมดูลเป้าหมายที่ถูกต้อง ที่แก้ไขปัญหา

ป้อนคำอธิบายรูปภาพที่นี่


ยืนยัน. สิ่งนี้ช่วยให้ฉันแก้ปัญหาได้
Chris8447

ฉันมักจะมีปัญหานี้เมื่อฉันแปลงตัวควบคุมมุมมองจาก Objective-C เป็น Swift ฉันพิมพ์ตัวอักษรตัวสุดท้ายซ้ำแล้วกด Enter ควรทำเคล็ดลับเช่นกัน
DevNebulae

30

คำตอบของฉัน: ตั้งค่าโมดูลที่กำหนดเองเท่ากับชื่อ Pod ที่กำหนดเอง (ในตัวอย่างของฉัน - ชื่อคลาสที่กำหนดเอง) เช่นเดียวกับภาพหน้าจอที่แนบมา

โซลูชันนี้ใช้สำหรับกรณีเฉพาะ : สำหรับคลาสมุมมองที่กำหนดเองจากเฟรมเวิร์กPod (หรือCarthage )

โครงสร้างพื้นฐาน: XCode8, Swift3

ป้อนคำอธิบายรูปภาพที่นี่


18

ฉันแก้ไขมันโดยทำสิ่งที่ตรงกันข้ามกับสิ่งที่ ChikabuZ แนะนำ (ขอบคุณที่ชี้ให้เห็น) ในไฟล์สตอรีบอร์ดหาสิ่งนี้:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass" customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">

และแทนที่ด้วยสิ่งนี้:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass" sceneMemberID="viewController">

ฉันไม่อยากจะเชื่อเลยว่าฉันเสียเวลาไปกับข้อบกพร่องในคอมไพเลอร์ Swift และ Xcode 6 กี่ชั่วโมง


17

การเลือกที่เหมาะสมModuleสำหรับฉันCustom Classฉันแก้ไขปัญหานี้

นี่มันคือ:

ป้อนคำอธิบายรูปภาพที่นี่


13

ฉันประสบปัญหานี้ในXcode 8เพื่อแก้ไขฉันต้องแก้ไขสตอรีบอร์ดในโปรแกรมแก้ไขข้อความ

โดยทั่วไปค้นหาการควบคุมของคุณและลบcustomModuleและออกcustomModuleProviderจากเอนทิตีการควบคุม

ทำเคล็ดลับสำหรับฉัน


ฮะ! Nice hack :)
Vexy

10

ผมมีปัญหาเดียวกัน.

ในกรณีของฉัน Xcode ไม่ได้เพิ่มคลาสที่กำหนดเองของฉันไปที่: Target> Build Phase> Compile Sources

ดังนั้นฉันขอแนะนำให้คุณตรวจสอบว่า CustomClass.m ของคุณอยู่ที่นั่นหรือไม่

ป้อนคำอธิบายรูปภาพที่นี่

ฉันหวังว่านี่จะช่วยคุณได้


นี่คือสิ่งที่เกิดขึ้นกับฉันและโชคดีที่พบทางออกของฉัน! ฉันมาที่นี่เพื่อตอบคำถาม แต่คุณเป็นคนแรก ขอบคุณ !!!
Gabriel Piffaretti

9

ฉันต้องเผชิญกับปัญหานี้ใน Xcode 6.1 เมื่อฉันออกMain.storyboardที่LaunchScreen.xibไฟล์และเริ่มต้นViewControllerเรียนจากโครงการของฉัน

ฉันแก้ไขโดยการลบLaunch Screen FileและMain InterfaceรายการจากInfo.plist



8

ฉันไปทุกหนทุกแห่งเพื่อสิ่งนี้ ไม่มีคำตอบใดที่เหมาะกับฉันจนกว่าฉันจะได้พบกับ 1 เพื่อนที่ขอให้ฉันย้ายโฟลเดอร์โครงการไปยังเดสก์ท็อป มันทำงานโดยอัตโนมัติ เห็นได้ชัดว่าถ้าคุณมีโฟลเดอร์โปรเจ็กต์ของคุณให้ลึกลงไปในหลาย ๆ โฟลเดอร์ XCODE จะแตกอย่างแท้จริง


ฉันได้รับปัญหานี้ใน Xcode 7 เบต้า 5 อีกครั้งตั้งแต่ฉันได้รับมันใน Xcode 6 มาก่อน คราวนี้วิธีนี้ใช้ได้กับฉัน
Jake Lin

1
ใน Visual Studio มีปัญหาคล้ายกัน แต่ตรงนั้นเราได้รับข้อความเตือนชัดเจนว่าเส้นทางนั้นยาวเกินไปและสิ่งต่าง ๆ ไม่สามารถเพิ่มหรือแก้ไขได้ ไม่แน่ใจว่าเป็นสิ่งเดียวกันกับ XCODE หรือไม่ แต่หลังจากตอนนั้นฉันเก็บโครงการทั้งหมดของฉันไว้ในเอกสารหรือเดสก์ท็อปและไม่เคยมีปัญหานี้อีกเลย ฉันยังให้คำแนะนำนี้กับคนที่ใช้ Xamarin Studio และมันก็ใช้ได้กับพวกเขา ...
VBaarathi

7

ขั้นตอนเหล่านี้ใช้ได้สำหรับฉัน

1) ล้างข้อมูลที่ได้รับ
2) ลบไฟล์. h และ. m
3) สร้างไฟล์. h และ. m อีกครั้ง


สิ่งนี้ใช้ได้สำหรับฉันเช่นกัน ฉันยังทำให้มันทำงานได้โดยไม่ต้องล้างข้อมูลที่ได้รับ
jaytrixz

สิ่งนี้ได้ผลสำหรับฉันขอบคุณ Arwin มาก แต่ฉันก็ยังไม่เข้าใจว่าทำไมมันทำให้เกิดข้อผิดพลาดแบบนี้เพราะฉันไม่ได้แก้ไขอะไรในชั้นเรียนหรือใน IB มาก่อน
Kirtikumar A.

7

ฉันแก้ไขได้โดยการเปิดไฟล์สตอรีบอร์ดของฉันเป็นซอร์สโค้ดและใช้ command-F เพื่อค้นหาคลาสที่ไม่รู้จักและลบคลาสที่กำหนดเองที่เกี่ยวข้อง


6

สิ่งที่ @ gfrs พูดถูกต้องคุณต้องตั้งค่าโมดูล อย่างไรก็ตามเมื่อฉันพบปัญหาที่ชั้นเรียนของฉันไม่ได้อยู่ในClassรายการแบบหล่นลง ในที่สุดฉันก็ลบไฟล์ swift เริ่มต้น Xcode ใหม่และสร้างไฟล์ขึ้นใหม่ ในที่สุดชั้นได้รับการจดทะเบียนและสามารถใช้ใน Storyboard

ดูคำตอบนี้ด้วยซึ่งดูเหมือนว่าจะแก้ปัญหา 'จริง' ที่ฉันพบ


การลบและเพิ่มไฟล์คลาสอีกครั้งใช้งานได้สำหรับฉัน ขอบคุณ!
Nicolas Miari

6

ฉันแก้ไขปัญหานี้ด้วยการพิมพ์ชื่อโมดูล (น่าเสียดายที่รายการดร็อปจะไม่แสดงอะไรเลย ... ) ใน Custom Class ของตัวตรวจสอบตัวตนสำหรับตัวควบคุมมุมมองและมุมมองทั้งหมด

คุณอาจต้องระบุผู้ให้บริการเป้าหมาย เพื่อให้บรรลุวัตถุประสงค์นี้คุณสามารถเปิดสตอรี่บอร์ดในโหมดซอร์สโค้ดและเพิ่มแอตทริบิวต์ "customModuleProvider" ในทั้ง ViewController และ View angle brackets


6

โซลูชันของฉัน (Xcode 8.1 Swift 3.0):

คลาสxxx ที่ไม่รู้จักในไฟล์เครื่องมือสร้างส่วนต่อประสาน

เปิด Storyboard เป็นรหัสที่มาและการค้นหาสำหรับxxx แอตทริบิวต์ลบซึ่งมีมูลค่าxxx สร้างและเรียกใช้


WTF? นี่เป็นสิ่งจำเป็นอย่างยิ่งสำหรับฉันขอบคุณ ฉันต้องลบcustomModule="" customModuleProvider=""
Dan Rosenstark

1
หากเราพยายามเผยแพร่แอปพลิเคชันไปยัง app store ที่มีข้อผิดพลาดเช่นนี้แสดงว่าแอปพลิเคชันนั้นถูกปฏิเสธโดยไม่คิด
ibrahimyilmaz

ฉันไม่เห็นด้วย. ฉันเพิ่งส่งบิลด์ที่ฉันต้องแก้ไขด้วยวิธีนี้เป็น TestFlight และพร้อมสำหรับการทดสอบเบต้า ... เราจะเห็นสิ่งที่เกิดขึ้นในแอพสโตร์จริง แต่เป็นข้อผิดพลาด IB ของ IMO ขอบคุณ!
Dan Rosenstark

4

ในกรณีของฉันฉันเพิ่มธง-ObjCไปOther Linker Flagsในการตั้งค่าของโครงการที่จะทำให้การทำงานของมัน นอกจากนี้ฉันลองด้วย-all_loadธงและมันก็ใช้ได้ดีเช่นกัน

ป้อนคำอธิบายรูปภาพที่นี่


3

ในกรณีของฉันคลาสที่อ้างอิงในสตอรีบอร์ด / xib ไม่มีชุดสมาชิกเป้าหมาย

ในการแก้ไขให้ชั้นเรียน.hและ.mไฟล์นั้นเป็นสมาชิกกลุ่มเป้าหมายเดียวกันกับชั้นเรียนอื่น ๆ ของคุณ

ไม่มีการตั้งค่าสมาชิกภาพเป้าหมาย


นี่เป็นปัญหาของฉัน แต่ในขณะที่พยายามแก้ไขปัญหาต่างๆฉันได้ก่อให้เกิดปัญหาที่คำตอบของ Epic Byte แก้ไขได้ คุณต้องมีซอร์สโค้ดของคุณในเป้าหมายที่คุณกำลังสร้าง แต่ใน IB คุณจำเป็นต้องตั้งค่าตัวควบคุมมุมมองให้เป็นส่วนหนึ่งของเป้าหมายปัจจุบัน
SafeFastExpressive

การเป็นสมาชิกเป้าหมายคือปัญหาของฉันเช่นกันดูทุกที่ แต่ต้องขอบคุณคำตอบนี้ฉันสามารถแก้ไขได้
Borzh

3

โซลูชันของฉันคือการลบ @objc ออกจากคำจำกัดความของคลาสที่กำหนดเอง


2
ตัวอย่างบางส่วนพร้อมคำอธิบายจะดีมาก
Nilambar Sharma

2

ฉันประสบปัญหาเมื่อทำการย้ายสตอรี่บอร์ดจากโครงการ Swift ไปยังโปรเจ็กต์ Objective-c โดยสังเกตเห็นคำตอบของ vvkuznetsovมันกลับกลายเป็นว่าทั้งสองโครงการใช้ตัวระบุเดียวกัน ฉัน "ผลิตภัณฑ์ -> ล้างข้อมูล" แล้วแตะปุ่ม Enter บนฟิลด์ข้อความโมดูลและคลาส ปัญหาหายไป


2

ฉันแก้ไขสิ่งนี้ตามสิ่งที่ลอร่าแนะนำ แต่ฉันไม่จำเป็นต้องสร้างไฟล์ใหม่

การใช้ XCode 4 ใน Project Navigator ให้เลือกไฟล์. m ที่มีคลาสที่บ่น

ไปที่ View-> Utilities-> Show File Inspector (ซึ่งจะแสดง File Inspector ทางด้านขวาพร้อมด้วยข้อมูล. m-file นั้น)

เปิดส่วนสมาชิกเป้าหมายและตรวจสอบให้แน่ใจว่าได้เลือกเป้าหมายของคุณสำหรับไฟล์. m แล้ว

เมื่อฉันเพิ่มไฟล์. m ของฉันลงในโครงการของฉันมันไม่ได้เพิ่มลงในเป้าหมายเริ่มต้นของฉันด้วยเหตุผลบางประการและนั่นทำให้ฉันได้รับข้อผิดพลาดที่คุณกล่าวถึง


2

ปัญหาของฉันคือข้อผิดพลาดของผู้ใช้ ฉันมี UIView ทั่วไปในสตอรี่บอร์ดของฉันและในส่วน Custom Class ของสารวัตรประจำตัวฉันเปลี่ยนชื่อจาก UIView เป็นคำที่ไม่มีความหมายโดยไม่ตั้งใจ

สิ่งที่ต้องแก้ไขก็คือเปลี่ยนกลับเป็น UIView


ฉันทำสิ่งเดียวกัน แต่ฉันได้เพิ่มชื่อ Custom View Controllers ไปยังส่วนคลาสรูทที่กำหนดเองของ ViewControllers ดังนั้นฉันจึงดูว่าทำไม View Controller จึงไม่สามารถพบได้เมื่อเป็นรูทวิวตลอดเวลา
TMIN

1

สิ่งที่ใช้ได้ผลสำหรับฉันคือการเพิ่มชื่อโมดูลลงในไฟล์ xib ...

Sooo, ไฟล์ xib มีลักษณะเช่นนี้:

mymodule.MyViewController.xib (Module being the name of the proyect, usually)

ในความคิดของฉันน่ากลัว แต่นี่เป็นวิธีที่ Apple ต้องการให้เราทำตอนนี้

คำถามนี้แสดงให้เห็นว่ามี 3 วิธีที่เป็นไปได้ในการกลับมาทำงานในรุ่นเบต้า 4 ... เห็นได้ชัดว่า Apple ไม่ได้มีประโยชน์มากในสถานการณ์นี้เนื่องจากบางคนเรียกพวกเขาว่า


1

ฉันมีปัญหาเดียวกันกับ Xcode เวอร์ชัน 6.1 (6A1052d) ฉันคิดว่าปัญหาจะเกิดขึ้นหากคุณเปลี่ยนชื่อแอพ / Xcode Project

โซลูชันของฉันคือการเพิ่มชื่อโมดูลในเครื่องมือสร้างอินเตอร์เฟสด้วยตนเอง


1

ฉันมีปัญหานี้หลังจากฉันเพิ่มเป้าหมายใหม่จากนั้นสร้างคลาสใหม่โดยใช้กล่องโต้ตอบ 'ไฟล์ใหม่' แต่ไม่ได้ตั้งใจตรวจสอบเป้าหมายใหม่เช่นเดียวกับเป้าหมายดั้งเดิมในกล่องโต้ตอบการสร้างดังนั้นวัตถุจึงถูกเพิ่มลงใน เป้าหมายเดิม ทางออกคือการลบไฟล์ต้นฉบับ (ลบการอ้างอิงเท่านั้น) จากนั้นเพิ่มกลับโดยใช้ 'เพิ่มไฟล์' คราวนี้ตรวจสอบทั้งสองเป้าหมาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.