Xcode 4: การสร้าง UIView xib เชื่อมต่อไม่ถูกต้อง


84

ฉันกำลังพยายามสร้างปลายปากกาที่มีมุมมองที่จะฝังอยู่ใน TableViewCell ฉันได้สร้างอินเทอร์เฟซและไฟล์การใช้งานResultCell.hและResultCell.m. พวกเขาเป็นสต็อกพร้อมใช้งานไม่มีการเปลี่ยนแปลงรหัส

จากนั้นฉันสร้างไฟล์ XIB เปล่าแล้วลาก UIView ไปที่มัน ResultCellแล้วฉันคลิกแฟ้มของเจ้าของและกำหนดประเภทที่จะ ResultCellฉันคลิกมุมมองและตั้งระดับนี้ยังเป็น

นี่คือปัญหาที่ฉันมี:

  1. เมื่อใช้มุมมอง Assistant Editor (ที่ฉันอาศัยอยู่) ResultCell.hไฟล์จะไม่ปรากฏขึ้นเมื่อฉันดูไฟล์ ResultCell.xib ฉันต้องบังคับให้โหลดโดยคลิกที่อัตโนมัติและเลือกไฟล์
  2. เมื่อฉันวางป้ายกำกับในมุมมองจากนั้น Ctrl + คลิกและลากไปที่. h เพื่อสร้างเต้าเสียบฉันได้รับข้อความแสดงข้อผิดพลาดนี้: " ไม่สามารถแทรกการเชื่อมต่อเต้าเสียบใหม่:ไม่พบข้อมูลใด ๆ เกี่ยวกับคลาสที่ชื่อ ResultCell "

ฉันได้ลองสร้างและสร้างมุมมองใหม่แล้ว แต่ก็ไม่ได้ผลและฉันเริ่มหมดความอดทนแล้ว ความช่วยเหลือใด ๆ จะเป็นประโยชน์มากชื่นชมมาก!


ฉันเพิ่งเจอสิ่งนี้เอง เมื่อคืนมันใช้งานได้และวันนี้ไม่มีอะไร ฉันจะแจ้งให้คุณทราบหากพบอะไร
Tavison

สำหรับบันทึกคำตอบหลายคำตอบที่นี่ช่วยฉันได้ในช่วงปีที่แล้ว Xcode เวอร์ชันล่าสุดได้ปรับปรุงสิ่งต่างๆ
Tim Sullivan

คำตอบ:


82

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


+1 ทำงานให้ฉันด้วย เพียงรีสตาร์ท XCode และตอนนี้ฉันสามารถ CTRL + Drag เพื่อสร้าง @propertys ใหม่ในไฟล์. h ของฉัน
Mike Gledhill

1
คำตอบของ David Pisoni ใช้ได้ผลสำหรับฉัน เพียงแค่รีสตาร์ท Xcode ไม่ได้ตัดมัสตาร์ด
Andy

ฉันไม่มีปัญหานี้เกิดขึ้นกับ Xcode หลายรุ่นในตอนนี้ดังนั้นอาจมีสาเหตุอื่นที่แพร่หลายในตอนนี้มากกว่าที่ฉันประสบเมื่อฉันเขียนคำตอบนี้เมื่อปีที่แล้ว
defragged

@Defragged คุณสามารถรวมขั้นตอนในการล้างแคชได้โดยกด Command K ก่อนที่จะอ้างสิทธิ์หรือที่ดีกว่านั้นคือการออกจาก Xcode จากนั้นล้างแคช ( ~/Library/Developer/Xcode/DerivedData)
user1046037

ฉันทำงานกับ Xamarin Studio ฉันต้องออกจาก xcode และ xamarin studio จากนั้นเปิด Xamamrin Studio อีกครั้งและเปิดไฟล์ xib จากที่นี่ซึ่งเปิดตัวใน xcode จากนั้นผู้ช่วยแก้ไขจะเปิดอย่างถูกต้อง
Dave Haigh

113

วันนี้ฉันตกอยู่ในสถานะคล้าย ๆ กัน มันแปลกมาก: ฉันสามารถแนบ XIB (ใหม่หรือที่มีอยู่) กับคลาส ViewController ที่มีอยู่แล้วในโปรเจ็กต์ได้ แต่ฉันไม่สามารถสร้าง ViewController ใหม่และแนบเข้ากับ XIB ใด ๆ ได้อย่างถูกต้อง ฟังก์ชัน "ผู้ช่วย" ไม่ทำงานหรือฟังก์ชันการเชื่อมต่อ IB-to-headerfile-connection

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

ทางออกของฉัน

  • ปิดโครงการของคุณ
  • ไปที่โฟลเดอร์ ~ / Library / Developer / XCode / DerivedData และลบโฟลเดอร์ย่อยทั้งหมดที่อ้างอิงโครงการที่คุณกำลังดำเนินการอยู่
  • เปิดโครงการของคุณใน XCode ปัญหาควรได้รับการแก้ไขในขณะนี้

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


6
ฉันเพิ่งลงชื่อเข้าใช้ SO บน Mac ของฉันเพื่อให้ฉันสามารถโหวตคำตอบนี้ได้! ทำงานให้ฉันโดยสิ้นเชิง สิ่งนี้ทำให้ฉันแทบคลั่งเพราะฉันเพิ่งเรียนรู้ที่จะใช้ XCode และมันก็ยากพอที่จะไม่มีปัญหาที่ไร้สาระเช่นนี้ :) ขอขอบคุณ!!!
Dave

2
มันใช้งานได้โดยไม่ต้องรีสตาร์ท xcode เพียงแค่การลบข้อมูลที่ได้มาและสร้างใหม่ (ในโครงการ iOS)
ศีรษะ

สิ่งนี้ใช้ได้ผลเมื่อไม่สามารถรีสตาร์ท xcode ได้ ฉันไม่รู้ว่ามันเกิดขึ้นได้อย่างไรโดยวิธีการของ David Pisoni ได้ผลดี
mmopy

น่ากลัว คุณรู้ได้ยังไง? ทำงานให้ฉัน
โฮ

1
ฮ่า ๆ เป็นเรื่องดีที่รู้ว่า IOS และ xcode สามารถเป็นบั๊กกี้ได้ถ้าไม่มากไปกว่าการใช้ eclipse และ Android: p
James andresakis

14

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


13

ฉันมีปัญหาเดียวกัน และฉันพยายาม:

  • รีสตาร์ท Xcode
  • การลบข้อมูลที่ได้มา
  • และอื่น ๆ อีกมากมาย

ไม่ได้ผล สิ่งที่ได้ผลสำหรับฉันคือการ:

  • ลบไฟล์คลาส 'ผู้ต้องสงสัย' ออกจากโปรเจ็กต์ (แค่ลบการอ้างอิงใช่ไหม)
  • เพิ่มเข้าไปในโครงการอีกครั้ง

และเสร็จแล้ว!


2
สิ่งนี้ได้ผลสำหรับฉันขอบคุณ! นี่เป็นสิ่งแรกที่ฉันลองนอกเหนือจากการรีสตาร์ท XCode เนื่องจากดูเหมือนว่าจะมีงานและความเสี่ยงน้อยที่สุดและได้ผลดี
adriandz

1
ทำงานให้ฉันหลังจากรีสตาร์ท xcode และการลบข้อมูลที่ได้รับไม่ได้
elad s

1
อันนี้ทำเคล็ดลับให้ฉันด้วย สิ่งนี้อาจเกี่ยวข้องกับการเปลี่ยนชื่อคลาส (ซึ่งเป็นสิ่งที่ฉันเพิ่งทำก่อนหน้านี้)
ecotax

9

หากการรีสตาร์ท Xcode ไม่ได้ผลฉันพบว่าการสลับไฟล์. m ใหม่ออกและกลับเข้าสู่การเป็นสมาชิกเป้าหมายใช้งานได้


3

สิ่งนี้ช่วยฉันได้:

  1. จากแผงไฟล์โครงการ (ด้านซ้าย) เลือกไฟล์ xib ที่เสีย
  2. คลิกที่ไอคอนเจ้าของไฟล์จากมุมมองตัวแก้ไข
  3. จากแผงคุณสมบัติ (ด้านขวา) เลือกแท็บที่สาม (ที่ด้านบน)
  4. ระบุ "คลาสที่กำหนดเอง"

หากคุณไม่เห็น "แผง" โปรดดูที่มุมขวาบนของหน้าต่างและเปิดใช้งานปุ่ม "มุมมอง" ที่เหมาะสม หากคุณไม่เห็นปุ่ม "มุมมอง" ให้คลิกที่ปุ่มแคปซูลด้านขวาบนสุด


ฉันเพิ่งเปลี่ยน (refactor) ชื่อคลาส คลาสที่กำหนดเองตามที่กล่าวไว้ในคำตอบนี้ยังคงถูกตั้งค่าเป็นชื่อเก่า เปลี่ยนเป็นชื่อใหม่และได้รับการแก้ไขแล้ว
PaulMrG

2

ฉันสังเกตเห็นว่าไฟล์. m ถูกย้ายไปอยู่ในโฟลเดอร์ en.lproj

เพียงแค่ลบ (อ้างอิงเท่านั้น) ไฟล์. m จาก Xcode และย้าย. m ออกจาก en.lproj เพิ่มอีกครั้งจะแก้ไขปัญหาได้

ไม่ต้องกังวลคุณจะได้รับการเชื่อมต่อทั้งหมดกลับคืนมา


ของฉันถูกสร้างขึ้นโดยอัตโนมัติและฉันยังไม่ได้เปลี่ยน ฉันทำและทุกอย่างก็โอเค ไม่มีอะไรได้ผล
entonio

2

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



2

ในกรณีของฉันมันช่วยสร้าง "การเปลี่ยนแปลงปลอม" (เพียงช่องว่าง) ไปยังไฟล์ส่วนหัวตาม


ฉันคิดว่านี่อาจจะทำเพื่อฉันด้วย ในกรณีของฉันฉันเพิ่มเต้าเสียบด้วยตนเอง จากนั้นฉันก็สามารถเชื่อมต่อบะหมี่ของฉันกับมันได้รวมทั้งสร้างร้านใหม่โดยการลาก ctrl
Daniel Wood

1
  1. ResultCell ควรเป็นคลาสย่อยของ UITableViewCell
  2. คุณไม่ควรลากไฟล์ UIViewลงบนผืนผ้าใบที่ว่างเปล่าคุณควรลากไฟล์UITableViewCell
  3. คุณควรเลือกเซลล์และเปลี่ยนแปลงมันให้เป็น subclass ของคุณ
  4. เจ้าของส่วนใหญ่มักเป็นผู้ควบคุมที่มีเต้าเสียบเข้ากับเซลล์

ทุกครั้งที่คุณต้องการโหลดเซลล์ใหม่โทร:

 [[NSBundle mainBundle] loadNibNamed:nibName 
                               owner:controllerWithOutletToCell 
                             options:nil]

หลังจากโหลดแล้วให้ใช้เซลล์และตั้งค่า ivar / outlet เป็นศูนย์พร้อมสำหรับการโหลดครั้งต่อไป

มีวิธีอื่น แต่เป็นเรื่องธรรมดา


ถ้าฉันทำอย่างนั้นฉันก็มีปัญหาเหมือนกัน ตัวแก้ไขผู้ช่วยไม่แสดง. h เมื่อฉันดูหัวปากกาและ ctrl + drag ไม่ได้สร้างรหัสร้านแสดงข้อผิดพลาด
Tim Sullivan

2
คุณใช้ 4.0.2 Xcode หรือไม่ คุณสามารถตั้งค่าตัวแก้ไขผู้ช่วยด้วยตนเองหากมีการทำงานผิดปกติ ฉันถือว่าคุณได้รีสตาร์ทแอปเพื่อทดสอบปัญหานี้อีกครั้ง (Xcode 4 มักได้รับประโยชน์จากสิ่งนี้) ดูเหมือนว่าจะไม่พบไฟล์คลาสในโปรเจ็กต์หรือชื่อบางอย่างผิดไป - การใช้อักษรตัวพิมพ์ใหญ่เป็นสิ่งสำคัญ โครงการกำลังสร้างอยู่หรือเปล่า? นี่เป็นฟังก์ชันระดับสูงมากซึ่งขึ้นอยู่กับเทคโนโลยีคอมไพเลอร์ใหม่
bshirley

แย่จังฉัน ใช่รีสตาร์ท Xcode และเริ่มทำงานทันที 'หลอกฉันตอนนี้ฉันจะตกดาบของฉัน
Tim Sullivan

1

บางทีสิ่งที่ได้ผลสำหรับฉันก็คือ .. (Xcode v4.5)

สิ่งนี้ไม่ได้ผล

ฉันพยายามควบคุมการลากเข้าสู่นิยามอินเทอร์เฟซของ. h

@interface SearchViewController : UIViewController

@end

สิ่งนี้ได้ผล (อาจเป็นไปได้ว่ามันควรจะทำงานอย่างไรฉันไม่ทราบมาก่อน) ดูวงเล็บเปิดและปิด ควบคุมการลากและวางหลังวงเล็บปิด

@interface SearchViewController : UIViewController
{
}

@end

1

ฉันมีปัญหาคล้ายกันกับโครงการที่เขียนด้วย Swift

สิ่งที่ได้ผลสำหรับฉันคือการตั้งค่า IBOutlet ในรหัสเช่นนี้

@IBOutlet var foo: UIView?

และหลังจากนั้นเชื่อมต่อกับ Interface Builder โดยลากไปที่วงกลมเล็ก ๆ ที่ปรากฏถัดจากบรรทัดรหัส


นี่เป็นวิธีเดียวที่ฉันสามารถทำให้มันใช้งานได้เช่นกัน ฉันกำลังติดตามบทช่วยสอนของ Apple ที่เขียนขึ้นสำหรับ Objective-C (เริ่มพัฒนาแอป iOS วันนี้) และจำเป็นต้องเชื่อมต่อช่องข้อความสิ่งที่ต้องทำใหม่ ในที่สุดฉันก็สร้าง @IBOutlet var textField: UITextField? และเชื่อมต่อกับสิ่งนั้นและมันก็ใช้งานได้ ใช้ XCode 6.4
andrewz

1

วิธีแก้ปัญหาข้างต้นไม่สามารถแก้ไขปัญหาตัวเชื่อมต่อสำหรับฉันได้ดังนั้นฉันจึงวางโครงงานสัตว์เลี้ยงไว้จนกว่าฉันจะเจอเธรด stackoverflow ต่อไปนี้:

https://stackoverflow.com/a/15873770/2846800

ฉันทำงานในโครงการขนาดใหญ่ใน XCode เวอร์ชันก่อนหน้านี้และได้ปิดการจัดทำดัชนี โดยการเปิดใช้งานการจัดทำดัชนีอีกครั้งปัญหาของฉันได้รับการแก้ไขแล้ว:

defaults delete com.apple.dt.XCode IDEIndexDisable

ตอนนี้ฉันสามารถใช้คุณสมบัติ D&D ของ Interface Builder ได้แล้ว หวังว่านี่จะช่วยคนอื่นได้ ...


1

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

อย่างไรก็ตามวิธีแก้ไขปัญหานี้ดูเหมือนจะเป็น:

  1. ทำความสะอาดโครงการ
  2. คลิก (โครงการของคุณ) ในมุมมอง Project Navigator ไปที่ Compile Sources ภายใต้ Build Phases ของเป้าหมายที่คุณกำลังสร้าง ลบและเพิ่มไฟล์. m ซึ่งทำให้คุณมีปัญหา
  3. อีกวิธีหนึ่งใน File Inspector (มุมมองยูทิลิตี้) ของไฟล์ NIB ภายใต้การเป็นสมาชิกเป้าหมายให้ยกเลิกการเลือกและตรวจสอบชื่อเป้าหมาย
  4. รีสตาร์ท Xcode เพื่อการวัดที่ดี
  5. แน่นอนว่าการลบและเพิ่มไฟล์. m เพียงอย่างเดียวก็ควรแก้ไขเช่นกัน

(ขั้นตอนที่ 1 และ 2 เพียงอย่างเดียวแก้ไขให้ฉัน)


0

หากคุณคัดลอกไฟล์จากโปรเจ็กต์อื่นตรวจสอบให้แน่ใจว่าคุณได้เลือกช่อง "เพิ่มในเป้าหมาย"


0

การเปลี่ยนชื่อไฟล์คลาสอาจยกเลิกการเชื่อมโยงจาก XIB คำตอบนี้ช่วยให้ฉันค้นพบสิ่งนี้:

Ctrl- ลากจากปุ่มไปยังวิธีการไม่ทำงาน ตัวสร้าง Xcode / อินเทอร์เฟซ

ตรวจสอบว่าคลาสแบบกำหนดเองของคุณตั้งค่าอย่างถูกต้องใน Identity Inspector


0

อาการคล้ายกัน แต่สาเหตุต่างกัน

เห็นได้ชัดว่าฉันกด backspace เมื่อโฟกัสอยู่ที่มุมมองผู้ช่วยเนื่องจากบรรทัดความคิดเห็นเทมเพลตไฟล์มาตรฐานเส้นหนึ่งเปลี่ยนจาก // เป็น / ซึ่งส่งผลให้ไฟล์ไม่ได้รวบรวม

การแก้ไขความคิดเห็นทำให้ SDK สามารถแยกวิเคราะห์ไฟล์รับรู้ว่าเป็น UIViewController และเพิ่มในเต้าเสียบ

ดังนั้น - หากคุณมีปัญหานี้ให้ทำการสร้างหรือวิเคราะห์เพื่อดูว่ามีข้อผิดพลาดที่ต้องแก้ไขในไฟล์. h ตัวควบคุมมุมมองของคุณหรือไม่ จากนั้นลองใช้วิธีแก้ไขปัญหาอื่น ๆ


0

นี่อาจเป็นหัวข้อเก่า แต่ในกรณีที่ใครก็ตามมีปัญหาเดียวกันในอนาคตให้ลองลบไฟล์. xib, .h และ. m ที่เกี่ยวข้องแล้วสร้างขึ้นใหม่ สำหรับฉัน UIViewController ในไฟล์. h ของฉันไม่เป็นสีม่วงแม้แต่การเว้นวรรคและการพิมพ์ก็ไม่ได้ช่วยอะไร


0

เพียงแค่ใส่เส้นแบ่งระหว่าง @implementation และ @synthesize คำตอบส่วนใหญ่ที่นี่มีเหมือนกัน มันได้ผลสำหรับฉัน

@implementation 

@synthesize

0

ฉันเพิ่งลองทุกอย่างที่นี่และไม่มีอะไรได้ผล (โดยใช้ Developer Preview สำหรับ Xcode 5)

สิ่งเดียวที่ใช้ได้ผลสำหรับฉันคือการใส่บรรทัดที่ไม่สมบูรณ์นี้ในไฟล์อินเทอร์เฟซของฉัน:

@property (nonatomic, weak)

ไม่ว่าด้วยเหตุผลใดการเพิ่มร้านค้าและการดำเนินการโดยการลากและวางจาก. xib ก็ทำงานได้ดีหลังจากนั้น


0

สำหรับฉันการทำความสะอาดหรือการลบ DerivedData ช่วยแก้ปัญหาได้

ฉันพยายามลบและสร้างคลาส UIViewController ของฉันใหม่หลายครั้งและพบปัญหาครั้งแล้วครั้งเล่า

จากนั้นฉันสร้างคลาส UIViewController ขึ้นมาใหม่และตั้งชื่ออื่น สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้


0

ฉันมีปัญหานี้และพบวิธีแก้ไขที่ไม่ได้ระบุไว้ข้างต้น

ในกรณีของฉันฉันเห็นว่ามีบางอย่างผิดปกติในไฟล์คลาส. h เนื่องจากตัวควบคุมมุมมองที่กำหนดเองของฉันไม่รู้จักคลาส: UIViewController (เป็นสีดำไม่ใช่สีม่วง) ตัวควบคุมมุมมองแบบกำหนดเองอื่น ๆ ทั้งหมดมี: UIViewController เป็นสีม่วง

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

เมื่อฉันเพิ่มมัน: UIViewController ปรากฏเป็นสีม่วงและทุกอย่างก็ทำงานได้ดี


0

สำหรับกรณีของฉันฉันมีหลายโครงการที่มีการอ้างอิงอื่น ๆ ฉันพยายามแก้ปัญหาโดยการลบข้อมูลที่ได้รับหรือรีสตาร์ท XCode แต่ไม่สามารถใช้งานได้ ในที่สุดฉันลองวิธีการต่อไปนี้และได้ผล:

ไปที่เป้าหมาย> สร้างสถาปัตยกรรมเป้าหมายเท่านั้น> และตั้งค่าทั้ง Debug และ Release เป็น NO

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


0

สำหรับไฟล์ * .m ของมุมมองคลาสนี้ให้เปิด "แสดงตัวตรวจสอบไฟล์" และยกเลิกการเลือก "การเป็นสมาชิกเป้าหมาย" สำหรับโปรเจ็กต์นี้จากนั้นทำความสะอาด (เมนูผลิตภัณฑ์ -> ล้าง) และตรวจสอบ "การเป็นสมาชิกเป้าหมาย" อีกครั้งสำหรับโปรเจ็กต์

ใส่คำอธิบายภาพที่นี่


0

เมื่อใช้ Swift ฉันมีปัญหาที่คล้ายกัน เจอความคิดเห็นที่เป็นส่วนหนึ่งของปัญหาสำหรับฉัน

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

เมื่อฉันไปลาก UITextField เพื่อสร้างเต้าเสียบมันจะไม่ยอมให้ฉัน ฉันสังเกตเห็นว่าความคิดเห็นของฉันยังคงพูดว่า "ViewController.swift" ดังนั้นฉันจึงเปลี่ยนข้อความความคิดเห็นเป็น "TestViewController.swift" และสร้างขึ้นใหม่ ฉันสามารถเชื่อมต่อเต้าเสียบของฉันได้!

ฉันสงสัยว่าสิ่งที่เกิดขึ้นคือ Indexer กำลังอ่านความคิดเห็นตลอดจนชื่อชั้นเรียนและสับสน


0

หวังว่านี่จะช่วยใครบางคนได้

ฉันต้องลบโฟลเดอร์ข้อมูลที่ได้มา คุณต้องคลิก Window -> Organizer -> Projects -> Delete Derived Data

และรีสตาร์ท XCODE

คุณควรจะไป!


0

คลาสใหม่ที่ไม่ได้เป็นส่วนหนึ่งของ "TARGET" น่าจะเป็นสาเหตุที่แท้จริงของสิ่งนี้ตามที่คำตอบเหล่านี้บางคำกล่าวพาดพิง

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

เป้าหมายคลาสใหม่

วิธีแก้ปัญหาเหล่านี้ที่เพิ่มคลาสใหม่ไปยังเป้าหมายของแอพจะช่วยแก้ปัญหาได้และเป็นสิ่งที่ 'การแก้ไข' เหล่านี้มีเหมือนกัน

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


0

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


0

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

วิธีแก้ปัญหาคือการลบและสร้างใหม่ด้วยเทมเพลตที่ถูกต้อง ใส่คำอธิบายภาพที่นี่

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