Không thể khai báo thuộc tính là công khai vì loại của nó sử dụng loại nội bộ


100

Tôi đã tạo hai lớp ContentBucket. Bucketchứa một mảng các Contentđối tượng và hiển thị nó thông qua một thuộc tính công cộng. Tuy nhiên, khi tôi làm như vậy, tôi nhận được lỗi:

Không thể khai báo thuộc tính là công khai vì loại của nó sử dụng loại nội bộ

nhập mô tả hình ảnh ở đây

Bất kỳ suy nghĩ về lý do tại sao điều này đang phát sinh lỗi?


Nó muốn được tốt đẹp để xem một cách để chỉ tiếp xúc với một lớp học cơ bản cho công chúng, nhưpublic(Array<NSObject>) let contents: Array<Content>
Bến Leggiero

Câu trả lời:


173

Bạn cũng phải khai báo mức độ truy cập của Contentlớp công khai.

public class Content {
   // some code
}

Như đã nêu trong tài liệu :

Không thể xác định biến công khai là có kiểu nội bộ hoặc kiểu riêng tư, vì kiểu này có thể không có sẵn ở mọi nơi mà biến công khai được sử dụng.

Các lớp được khai báo internaltheo mặc định, vì vậy bạn phải thêm publictừ khóa để đặt chúng ở chế độ công khai.

Một quy tắc tương tự cũng tồn tại cho các chức năng.

Một hàm không thể có mức truy cập cao hơn các kiểu tham số và kiểu trả về của nó, bởi vì hàm có thể được sử dụng trong các tình huống mà các kiểu cấu thành của nó không có sẵn cho mã xung quanh.


3
Câu trả lời chính xác. Tôi cũng thấy rằng lỗi sẽ không biến mất cho đến khi Xcode (9.2) được khởi động lại.
Jasongiss

9

Content cũng phải được khai báo là công khai:

public class Content {}

Tùy thuộc vào trường hợp sử dụng của bạn, bạn cũng có thể khai báo Bucketlà nội bộ. Chỉ cần bỏ qua publictừ khóa trong trường hợp này.


1

Vấn đề của tôi là vấn đề về không gian tên.

Tôi đã khai báo một enum được gọi Datavà nó đang gắn với Datalớp Swift , đặc biệt là một imageData: Datathuộc tính trong mô hình Dữ liệu lõi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.