2011-08-12 38 views
8

Tôi đang thử phiên bản Xcode 4.2 Beta mới và tôi tự hỏi liệu mã của tôi có sai hay nếu tôi đang gặp lỗi.Xcode 4.2 Biên dịch Không thành công với ô mẫu

Tính năng Storyboard mới đầy hứa hẹn nhưng cực kỳ lỗi thời. Ngay bây giờ tôi đã tạo ra một dự án đơn giản với một tableview. Bản xem bảng này sẽ là "Kiểu được nhóm" chứa UITextFields. Tính năng "Prototype Cell" mới của storyboard cho phép bạn tạo một ô mẫu trong GUI mà bạn có thể vẽ bằng "Reuse identifier" trong phương thức cellForRowAtIndexPath. Khi tôi kéo trong một UITextField trong "tế bào nguyên mẫu" này và rút ra, nó hoạt động tuyệt vời!

Tuy nhiên! Khi tôi tham chiếu trường văn bản này đến một lối thoát trong mã của mình, tôi gặp lỗi: Uncategorized Không thể biên dịch được. Không thể ghi vào đường dẫn: ... (Đường dẫn đến DerivedData)

Tại sao điều này? Đây có phải là lỗi không? Còn ai khác không?

+0

Tôi có thể xác nhận việc tham chiếu một UITextField trong một ô mẫu thử nghiệm không hoạt động ... Xcode 4.2.1 ... humph – lol

+0

Câu trả lời của Tony dưới đây làm việc cho tôi. Có thể @ObjectiveCoder có thể chấp nhận nó? – Thompsonian

+0

Câu trả lời của Tony giúp tôi nhận ra điều gì là sai: Tôi đã có một lối thoát giữa ô văn bản (trong kịch bản) của ô văn bản và lớp xem bảng (mã) của tôi. Các cửa hàng được cho là giữa các tế bào trong storyboard và lớp tế bào của khóa học! – dvkch

Trả lời

1

Tôi không có giải pháp hoàn hảo cho vấn đề của bạn nhưng tôi đã có cùng và tôi tìm thấy một cách để làm cho nó hoạt động (mà không liên kết các cửa hàng để TableViewController).

Chỉ cố gắng tạo lại chế độ xem của bạn từ đầu và Xây dựng & Chạy mỗi lần bạn thêm thành phần.

Để thêm một TableViewController => Kiểm tra nếu nó hiển thị một bảng trống.

Thiết kế ô tùy chỉnh của bạn và liên kết các Cửa hàng của ô với nó. (Không quên thay đổi Class của TableViewCell của bạn) => Một lần nữa kiểm tra nó

Sau đó thay đổi Class của TableViewController thành lớp của bạn và bây giờ bạn có thể truy cập vào các cửa hàng của ô.

Nó làm việc cho tôi. Tôi hy vọng nó sẽ cho bạn.

+0

Đó là vấn đề cảm ơn! – dvkch

+0

Tôi sẽ tự mình đăng giải pháp này, nhưng bạn đã giải quyết vấn đề khá chính xác. Vấn đề đang được gây ra bởi một ràng buộc với một thuộc tính trong khả năng có nhiều ViewController có chứa UITableView. Thay vào đó, bạn nên tạo lớp UITableViewCell và liên kết với các thuộc tính đó như TroX đã chỉ ra. –

31

Tôi đã gặp sự cố này trong một vài trường hợp trong Xcode 4.2 (bản phát hành cuối cùng).

Nó thường liên quan đến một ổ cắm hoặc kết nối khác mà bạn đã thiết lập trình biên dịch là khó chịu về (vì thiếu một thuật ngữ tốt hơn). Bí quyết là xác định kết nối nào.

Bạn có thể xem kết quả chi tiết của quá trình xây dựng trong Xcode 4.2 bằng cách làm như sau:

  1. Chuyển sang navigator log trong phần panel bên trái
  2. Chọn "Xây dựng"
  3. Bạn sẽ thấy (các) lỗi, bao gồm lỗi biên dịch của bạn không thành công.
  4. Bạn có thể mở rộng nhật ký xây dựng cho lỗi đó bằng cách nhấp vào biểu tượng bên phải nhất (trông giống như danh sách). Điều đó sẽ mở rộng và hiển thị lỗi gây ra sự cố.
+1

Tôi đã thực hiện một mối quan hệ sai trong một ViewController. Bằng cách sử dụng nhật ký, tôi có thể thấy lỗi đó. Cảm ơn. – Nasenbaer

+0

Cảm ơn rất nhiều. Bạn đã tiết kiệm cho tôi rất nhiều giờ gỡ lỗi. – iRuth

1

Tôi phải xóa thư mục cho dự án của mình trong ~/Library/Developer/Xcode/DerivedData/và xây dựng lại. Bạn có thể tìm tên của thư mục đó trong nhật ký bằng cách sử dụng thủ tục của Tony ở trên.

EDIT: Tôi nghĩ đây là lỗi trong Xcode (Phiên bản 4.2.1). Nó liên tục với tôi. Để sửa chữa nó, tôi phải xây dựng lại, đôi khi hai hoặc ba lần. Build/Clean dường như không giúp ích gì.

EDIT 2: Ok, hy vọng vấn đề thực sự. Tôi có hai tham chiếu đến bảng phân cảnh của tôi trong trình điều hướng dự án (có thể là phần còn lại của việc sao chép/xây dựng lại dự án). Tôi vừa xóa một trong số chúng (đảm bảo chỉ xóa tham chiếu!). Dường như có thể là vấn đề (Xcode biên dịch cùng một tệp hai lần cùng một lúc).

4

Nếu anyones vẫn gặp sự cố với điều này, tôi thấy giải pháp là sử dụng thẻ thay vì cửa hàng.

cellForRowAtIndexPath UILabel *titleLabel = (UILabel *)[cell viewWithTag:1001]; titleLabel.text = @"Name";

+0

+1. Cảm ơn! Có vẻ như đúng cách để làm điều đó. Cũng được đề cập ở đây http://stackoverflow.com/questions/9236621/what-does-the-couldnt-compile-connection-error-mean – Dexter

0

Bạn không nên thêm tiêu đề hoặc hình ảnh hoặc chi tiết nhãn để một lối thoát.

Tại sao bạn cần lối thoát?

Chúng được sửa đổi hoàn toàn bên trong mã khi bạn triển khai giao thức.

4

OK một đồng nghiệp của tôi cho tôi thấy thanh tra kết nối và thì đấy, có một kết nối cũ gây ra lỗi xây dựng. Vì vậy, chọn tập tin .storyboard, mở thanh tra kết nối (cuối cùng với mũi tên) và nó sẽ cung cấp cho bạn một cái nhìn tổng quan về tất cả các connetions.

1

Tôi gặp lỗi này khi cố gắng đặt/vào tên của ID bảng phân cảnh. Kiểm tra xem bạn có đang sử dụng các ký tự an toàn không! (Doh!)

Các vấn đề liên quan