संपत्ति को सार्वजनिक घोषित नहीं किया जा सकता है क्योंकि इसका प्रकार आंतरिक प्रकार का उपयोग करता है


100

मैंने दो कक्षाएं बनाईं Contentऔर Bucket। वस्तुओं Bucketकी एक सरणी होती Contentहै और एक सार्वजनिक संपत्ति के माध्यम से उजागर करता है। हालाँकि, जब मैं ऐसा करता हूं, मुझे त्रुटि मिलती है:

संपत्ति को सार्वजनिक घोषित नहीं किया जा सकता है क्योंकि इसका प्रकार आंतरिक प्रकार का उपयोग करता है

यहां छवि विवरण दर्ज करें

इस पर कोई विचार क्यों एक त्रुटि उठा रहा है?


जनता के लिए केवल एक मूल वर्ग को उजागर करने का एक तरीका देखना अच्छा होगा, जैसेpublic(Array<NSObject>) let contents: Array<Content>
बेन लेग्गीरो

जवाबों:


174

आपको Contentवर्ग की पहुंच के स्तर को भी सार्वजनिक करना होगा।

public class Content {
   // some code
}

जैसा कि प्रलेखन में कहा गया है :

सार्वजनिक चर को आंतरिक या निजी प्रकार के रूप में परिभाषित नहीं किया जा सकता है, क्योंकि सार्वजनिक चर का उपयोग किया जाने वाला प्रकार हर जगह उपलब्ध नहीं हो सकता है।

कक्षाएं internalडिफ़ॉल्ट रूप से घोषित की जाती हैं , इसलिए आपको publicउन्हें सार्वजनिक करने के लिए कीवर्ड जोड़ना होगा ।

एक समान नियम कार्यों के लिए भी मौजूद है।

एक फ़ंक्शन के पास अपने पैरामीटर प्रकारों और रिटर्न प्रकार की तुलना में एक उच्च पहुंच स्तर नहीं हो सकता है, क्योंकि फ़ंक्शन का उपयोग उन परिस्थितियों में किया जा सकता है जहां इसके घटक प्रकार आसपास के कोड के लिए उपलब्ध नहीं हैं।


3
बहुत बढ़िया जवाब। मैंने यह भी पाया कि Xcode (9.2) के पुनरारंभ होने तक त्रुटि दूर नहीं होगी।
जसॉन्गिस

9

Content सार्वजनिक रूप से भी घोषित किया जाना चाहिए:

public class Content {}

आपके उपयोग-मामले के आधार पर आप Bucketआंतरिक भी घोषित कर सकते हैं। publicइस मामले में बस कीवर्ड को छोड़ दें ।


1

मेरा मुद्दा एक नाम स्थान की समस्या थी।

मैंने एक एनम घोषित किया था Dataऔर वह स्विफ्ट Dataवर्ग के साथ काम कर रहा था , विशेष रूप imageData: Dataसे एक कोर डेटा मॉडल के भीतर एक संपत्ति।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.