ไม่สามารถแทรกการเชื่อมต่อเต้าเสียบใหม่: ไม่พบข้อมูลใด ๆ สำหรับคลาสที่มีชื่อ


281

ฉันพบข้อผิดพลาดใน Xcode โดยบอกว่าไม่มีข้อมูลเกี่ยวกับตัวควบคุมมุมมอง

ไม่สามารถแทรกการเชื่อมต่อเต้าเสียบใหม่: ไม่พบข้อมูลใด ๆ สำหรับคลาสที่มีชื่อ

ทำไมสิ่งนี้จึงเกิดขึ้น

ภาพหน้าจอ 1


2
ฉันคิดว่านี้ได้รับการถามก่อน: stackoverflow.com/questions/17735182/...
Tapani

ผมก็เลิก Xcode แล้วเปิดใหม่ คอมไพเลอร์จะทำการโหลดไฟล์ทั้งหมดอีกครั้งและมันสามารถตรวจจับไฟล์ที่คุณกำลังมองหา
Jane chicken

ตรวจสอบว่าคุณยังไม่มีเต้าเสียบที่ไม่ได้เชื่อมต่ออยู่ในไฟล์มุมมองคอนโทรลเลอร์ของคุณ ฉันค้นพบว่าฉันทำ หลังจากที่ฉันลบมันผมมีปัญหาใด ๆ
Kex

สำหรับผมไม่มีข้างต้นแก้ worked.I ต้องลบมุมมองควบคุมซึ่งผมคัดลอกและวางอีกครั้งในกระดานของฉันที่จะนำมาใช้ใหม่ว่าจากนั้นผมลากตัวควบคุมมุมมองใหม่ ๆ ในสตอรี่บอร์ดและทุกสิ่งได้ดี :) ฉันหวังว่ามันจะช่วยคนที่มีปัญหาเดียวกัน
Arslan Saleem

นี่เป็น BUG ใน XCode และฉันไม่รู้ว่าทำไมพวกเขาถึงไม่แก้ไข คุณจำเป็นต้องปิด XCode และ re เปิด เมื่อคุณลองใส่ร้านอีกครั้ง แต่คราวนี้ออกจากเครือ ENTERS ก่อนที่จะทำ คุณไม่ต้องลบอะไรหรือเสียเวลากับตัวเลือกอื่น ๆ ... นี่จะช่วยแก้ปัญหาของคุณ
mavesonzini

คำตอบ:


692

นี่คือบางสิ่งที่สามารถแก้ไขได้ (เพื่อเพิ่มความยาก):

  • ทำความสะอาดโครงการ ( ผลิตภัณฑ์> ทำความสะอาด )
  • วางด้วยตนเอง

    @IBOutlet weak var viewName: UIView!
    // or
    @IBAction func viewTapped(_ sender: Any) { }
    

    และควบคุมการลากไป (เปลี่ยนประเภทตามความจำเป็น.) ยังเห็นนี้

  • ปิด Xcode โดยสมบูรณ์และเริ่มโครงการของคุณใหม่

  • ลบโฟลเดอร์ Derived Data (ไปที่Xcode> Preferences > Locationsและคลิกที่ลูกศรสีเทาโดยโฟลเดอร์ Derived Data จากนั้นลบโฟลเดอร์โครงการของคุณ)
  • คลิกที่ลบในชั้นเรียนลบการอ้างอิง (ไม่ใช่ย้ายไปที่ถังขยะ) และเพิ่มกลับมาอีกครั้ง (ดูคำตอบนี้ )

อย่าลืมลบคลาสบนตัวควบคุมมุมมองเพื่อให้ขั้นตอนนี้ใช้งานได้
reggie

8
ขั้นตอนเหล่านี้ไม่ได้ผลสำหรับฉันใน Xcode 8.3.2 ฉันต้อง "แสดงตัวตรวจสอบตัวตน"> เคลียร์ฟิลด์ "คลาส" (เน้นชื่อคลาสที่กำหนดเองและลบ)> ป้อนชื่อคลาสในฟิลด์ "คลาส" อีกครั้ง Xcode ป้อนชื่อคลาสโดยอัตโนมัติ ฉันกด Enter
PeqNP

เพิ่มบรรทัดalias purgederiveddata='rm -rf ~/Library/Developer/Xcode/DerivedData/*'ที่คุณ ~ / .bashrc ที่จะใช้คำสั่งpurgederiveddataเพื่อยกเลิกคำสั่งกับหนึ่ง
eskimwier

ฉันพบวิธีอื่นในการแก้ไขปัญหานี้เกิดขึ้นกับฉันเมื่อฉันเปลี่ยนการตั้งค่าการสร้างเพื่อปรับปรุงความเร็วในการสร้าง stackoverflow.com/a/50555888/2952876
Mathias Van Houtte

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

134

หรือถ้าไม่มีผลงานดังกล่าวข้างต้นให้พิมพ์ชื่อของเต้าเสียบลงในแฟ้มแรก@IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!และจากนั้นคลิกและลากจากเต้าเสียบในปลายปากกากับตัวแปรที่คุณเพิ่งสร้างโปรแกรม มันควรจะทำงานโดยไม่ต้องยุ่งยากในการทำความสะอาดอาคารและลบอะไร


4
มักจะเป็นวิธีที่เร็วกว่าแทนที่จะใช้เวลานานในการทำความสะอาดสร้าง ฯลฯ ขอบคุณ
mohonish

1
ดีมากและเมื่อคุณทำสิ่งนี้อัตโนมัติจะเริ่มปรากฏขึ้นขอบคุณ
AmJa

1
กำปั้นของทั้งหมดเชื่อมต่อวัตถุ XIB ของคุณกับ IBoutlets จากนั้นลองเชื่อมต่อข้อ จำกัด IBOutlets หากไม่มีสิ่งนี้มันจะแสดงข้อผิดพลาดเสมอ
Chandramani

นอกจากนี้ยังสามารถสร้างความแตกต่างเมื่อคุณพยายามเสียบปลั๊กใหม่ สำหรับด้านบนของรายการ (ที่มีพื้นที่ว่างด้านบน) ทำงาน; กลางรายการไม่ได้
ริชาร์ด

1
ควรทำเครื่องหมายเป็นคำตอบที่ดีที่สุด มันเป็นเรื่องง่ายขึ้นเร็วขึ้นและน่าเชื่อถือมากขึ้น นอกจากนี้ยังใช้งานได้ตลอดเวลา! ทำได้ดีมากและขอขอบคุณ @StephenPaul
denis_lor

51

เพียงทำตามสองขั้นตอนต่อไปนี้เพื่อกำจัดข้อผิดพลาดนี้

  1. โครงการทำความสะอาดโดยใช้สินค้า> ทำความสะอาด
  2. เรียกใช้โครงการ

ตอนนี้ลองเพิ่มการกระทำหรือเต้าเสียบ แค่นั้นแหละ.

การเข้ารหัสที่มีความสุข


4
แปลก ... สองขั้นตอนง่าย ๆ นี้ช่วยแก้ปัญหาให้ฉันได้เช่นกัน ดังนั้นฉันขอแนะนำให้ลองทำตามขั้นตอนง่าย ๆ ก่อน :-)
crosscode

49

ไม่มีคำแนะนำในคำตอบที่ดีที่สุดสำหรับฉัน กำลังจะบ้า จากนั้นสังเกตว่าผู้ช่วยแก้ไขตั้งค่าเป็นManualและฉันอยู่ในViewController.swift (Interface)แทนไฟล์ ViewController.swift

เปลี่ยนแล้วและแก้ไขปัญหาได้ ค่อนข้างน่าอาย แต่เฮ้เราทุกคนกำลังเรียนรู้

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


1
คำตอบช่วยชีวิต! ไม่มีคำตอบอื่นใดที่แก้ไขได้อีกครั้งและตลอดไป น่าเสียดายที่คำอธิบายข้อผิดพลาดไม่ได้ให้คำใบ้น้อยที่สุดว่าคุณอาจอยู่ในไฟล์ที่สวมใส่ ขอบคุณ +1 สำหรับภาพที่ทำให้ทุกอย่างชัดเจน
Pauloco

ฉันสังเกตเห็นบางสิ่งที่คล้ายคลึงกัน แต่แตกต่างกัน: ในเส้นทางที่ด้านบนสุดที่แสดงชื่อคลาสมีเพียงชื่อคลาส แต่จุดเริ่มต้นของเส้นทางหายไปเป็น myProject> appName> controller และคลาส ฉันเลือกชั้นอื่นแล้วกลับไปที่ปัญหาหนึ่งและทุกอย่างตกลง
claude31

15

นี่คือขั้นตอนการแก้ไขสำหรับฉัน:

  1. ลบการอ้างอิงชื่อคลาสจากมุมมอง (กระดานเรื่องราว / xib) และบันทึก;
  2. เพิ่มชื่อคลาสอีกครั้งและบันทึก;
  3. ทำความสะอาดและสร้าง;

เสร็จแล้ว!


10

ฉันมีปัญหาเดียวกัน ฉันเหนื่อยดังต่อไปนี้การแก้ปัญหา แต่ไม่ได้ทำงาน:

  1. Clean Project (cmd + shift + k) และแม้กระทั่ง Clean Project Build (cmd + shift + alt + k)
  2. Deleted Derived data และ Module Cache content

วิธีแก้ปัญหาด้านล่างนี้:

  1. ย้ายไปยังไฟล์รหัสต้นฉบับและเขียนIBOutlet / IBActionด้วยตนเอง (แนะนำให้คัดลอกวาง)

ภาพหน้าจอ 1

  1. จากนั้นย้ายไปที่ไฟล์ Storyboard และเปิดUtilitesหน้าต่าง
  2. ไปที่ Connection Inspector
  3. จากนั้นเชื่อมต่อIBOutletและIBActionเขียนในไฟล์ต้นฉบับด้วย Interface Builder

ภาพหน้าจอ 2


การลาก Outlets / การกระทำไม่ทำงานเลย แต่หลังจากฉันทำแบบนี้ด้วยตนเองทุกอย่างทำงานได้อย่างถูกต้องอีกครั้ง
Jason

นี่เป็นวิธีทางเลือกมาตรฐานในการเชื่อมต่อ ในกรณีของการกระทำปุ่มตัวเลือกวิธีเดียว AFAIK ในกระดานเรื่องราวคุณสามารถคลิกขวาที่ตัวควบคุมค้นหาฟังก์ชันและทำการเชื่อมต่อ
curt

8

ผมมีปัญหาเหมือนกัน. ฉันรู้ว่าในรายการ X-Code Manualถูกเลือกเมื่อฉันพยายามสร้างเต้าเสียบโดยการควบคุมการลาก

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

หลังจากที่ฉันตั้งเป็นอัตโนมัติมันทำงานได้

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


ฉันมีปัญหาตรงนี้ ไม่ได้สังเกตเห็นความแตกต่าง
Joshua Dance

ยิ่งใหญ่ !!! ฉันเสียเวลาไปมากในการทำความสะอาดบั๊กโครงการรีสตาร์ท xCode ลบข้อมูลที่ได้รับ แต่นั่นเป็นเพียงวิธีการแก้ปัญหาที่เหมาะกับฉัน! ขอบคุณมาก!
Anton Eregin

7

ฉันแก้ไขปัญหานี้โดยการสร้างป้ายกำกับและฟิลด์ข้อความโดยทางโปรแกรมแล้วลากคำสั่งจากวงกลมเล็ก ๆ ทางซ้ายของรหัสไปยังส่วนประกอบบนกระดานเรื่องราว เพื่อแสดงจุดของฉัน: ฉันเขียน@IBOutlet weak var HelloLabel: UILabel!แล้วกดคำสั่งแล้วลากรหัสลงในส่วนประกอบบนกระดานเรื่องราว


วิธีนี้ใช้ได้ผลดีสำหรับฉัน! นอกเหนือจาก@IBOutlet weak var myButton: UIButtonฉันใช้กระบวนการเดียวกันในการตั้งค่า@IBAction func doSomething(_ sender: Any) { }แล้วเชื่อมต่อ func นี้กับUIButtonบนกระดานเรื่องราวของฉัน ขอบคุณที่แบ่งปัน @KuboAndTwoStrings นี้
Nii Mantse

6
  1. ปิดโครงการที่คุณกำลังทำงานด้วย
  2. ลบโฟลเดอร์【 DerivedData project ของโครงการ (โฟลเดอร์นี้อาจอยู่ในโฟลเดอร์ของโครงการของคุณหรือภายใน
    ~/Library/Developer/Xcode/DerivedData/
    (โครงการของคุณ) /) หรือที่อื่นที่คุณตั้งค่าไว้
  3. เริ่มโครงการของคุณใหม่

4

ฉันพบวิธีแก้ปัญหาง่ายขึ้นเนื่องจากฉันพบข้อบกพร่องนี้ใน XCODE 9

ขั้นตอนที่หนึ่งไปที่ ViewController ของคุณและตนเองเขียนคุณสมบัติที่คุณต้องการที่จะเชื่อมต่อเป็นตัวอย่างด้านล่างให้แน่ใจว่าคุณใช้รูปแบบดังต่อไปนี้

@IBOutlet var คำถามที่อ่อนแอ StackView: UIStackView!

ขั้นตอนที่สองไปที่กระดานเรื่องราวของคุณและเชื่อมต่อมุมมองของคุณหรือสิ่งที่คุณพยายามเชื่อมต่อกับคุณสมบัติที่คุณสร้างขึ้นในขั้นตอนที่ 1

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


3

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันเปลี่ยนชื่อชั้น จากนั้นฉันก็แก้ไขมันโดยทำตามขั้นตอนด้านล่าง

  • ในเมนู Xcode -> Product->Clean
  • Restart Xcode

นี่เป็นทางออกเดียวที่ทำให้ฉันตลกพอ
Joseph Astrahan

2

ในกรณีของฉันนี่คือ bc ฉันเลือกไฟล์ UIViewController ใหม่ใน IB แล้วลอง ctrl- ลากไปที่คอนโทรลเลอร์ใหม่นี้โดยไม่ต้องลบการเชื่อมต่อก่อนหน้านี้ใน Connections Inspector ลบสิ่งเหล่านั้นก่อนแล้วลองอีกครั้ง


2

สำหรับฉันมันใช้งานได้บนแท็บด้านขวา> การโลคัลไลเซชันฉันเลือกเช็กบ็อกซ์ภาษาอังกฤษ มีการตรวจสอบฐานเบื้องต้นเท่านั้น หลังจากนั้นฉันก็ไม่มีปัญหาอีกแล้ว หวังว่านี่จะช่วยได้!


2

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

ฉันเลือกตัวเลือกอัตโนมัติเพื่อเลือกไฟล์ ViewController.swift จากนั้นฉันก็สามารถที่จะรับสินค้าได้


2

โปรดทำสองขั้นตอนต่อไปนี้เท่านั้นเพื่อกำจัดข้อผิดพลาดนี้

1.  Clean Project using Product -> clean.
2.  Run the Project.

ตอนนี้พยายามที่จะเพิ่ม / เชื่อมต่อการกระทำหรือร้าน

ทำงานได้ดีสำหรับฉันหลายครั้ง


1

มันเกิดขึ้นเมื่อฉันเพิ่มSwiftไฟล์ลงในObjective-Cโครงการ
ดังนั้นในสถานการณ์นี้สิ่งที่คุณสามารถทำได้คือ .

  • Select MY_FILE.Swift >> Delete >> Remove Reference
  • Select MY_FOLDER >> Add MY_FILE.Swift
  • Voila ! You are good to go .

ขึ้นอยู่กับสิ่งนี้! ฉันพยายามแก้ไขปัญหานี้ด้วยตัวเองมาครึ่งชั่วโมงแล้วฮ่า ๆ ปัญหาเช่นนี้ในสตอรีบอร์ดนั้นง่ายต่อการแก้ไข ขอบคุณ! สิ่งนี้ช่วยฉันได้มาก!
เกล็

0

ทางออกที่ง่ายที่สุด: - ฉันใช้ xCode 7 และ iOS 9

ใน. m ของคุณ

ลบ #import "VC.h"

บันทึก .m และเชื่อมโยงเต้าเสียบของคุณอีกครั้งว่ามันทำงานได้ดี


0

ฉันใช้ xCode 7 และ iOS 9

ใน. m ของคุณ

ลบ #import "VC.h"

บันทึก .m และเชื่อมโยงเต้าเสียบของคุณอีกครั้งว่ามันทำงานได้ดี

ใน. m ของคุณ

เพิ่ม #import "VC.h"

บันทึก .m


0

สิ่งนี้ไม่ได้ผลสำหรับฉัน แต่ฉันคิดออก

ภายในกระดานผมคัดลอก ViewController ที่สอดคล้องกันลงในคลิปบอร์ดและลบมันทิ้งไปหลังจากนั้นฉันวางมันอีกครั้ง

ทันใดนั้นทุกอย่างก็ทำงานเหมือนมีเสน่ห์อีกครั้ง!

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