সম্পত্তি জনসাধারণ হিসাবে ঘোষণা করা যায় না কারণ এর ধরণটি অভ্যন্তরীণ প্রকার ব্যবহার করে


102

আমি দুটি ক্লাস তৈরি Contentএবং Bucket। অবজেক্টগুলির Bucketএকটি অ্যারে রয়েছে Contentএবং এটি প্রকাশ্য সম্পত্তির মাধ্যমে প্রকাশ করে। তবে, আমি যখন এটি করি তখন ত্রুটিটি পেয়েছি:

সম্পত্তি জনসাধারণ হিসাবে ঘোষণা করা যায় না কারণ এর ধরণটি অভ্যন্তরীণ প্রকার ব্যবহার করে

এখানে চিত্র বর্ণনা লিখুন

কেন এটি ত্রুটি বাড়িয়ে দিচ্ছে সে সম্পর্কে কোনও চিন্তাভাবনা?


জনসাধারণের কাছে কেবলমাত্র একটি মৌলিক শ্রেণিকে প্রকাশ করার public(Array<NSObject>) let contents: Array<Content>
উপায়টি দেখে ভাল লাগবে

উত্তর:


177

আপনাকে Contentক্লাসের জনগণের অ্যাক্সেস স্তরও ঘোষণা করতে হবে ।

public class Content {
   // some code
}

ডকুমেন্টেশনে যেমন বলা হয়েছে :

কোনও পাবলিক ভেরিয়েবলটি অভ্যন্তরীণ বা ব্যক্তিগত ধরণের হিসাবে সংজ্ঞায়িত করা যায় না, কারণ এই ধরণের পাবলিক ভেরিয়েবলটি ব্যবহৃত হয় এমন জায়গাগুলি সর্বদা উপলভ্য নয়।

শ্রেণিগুলি internalডিফল্ট হিসাবে ঘোষিত হয় , সুতরাং আপনাকে publicকীওয়ার্ডগুলি সর্বজনীন করতে আপনাকে যুক্ত করতে হবে।

একই ধরণের নিয়ম কার্যকারিতার জন্যও বিদ্যমান।

কোনও ফাংশনটির প্যারামিটার ধরণের এবং রিটার্নের ধরণের চেয়ে উচ্চতর অ্যাক্সেসের স্তর থাকতে পারে না, কারণ ফাংশনটি এমন পরিস্থিতিতে ব্যবহার করা যেতে পারে যেখানে তার উপাদানগুলির প্রকারগুলি আশেপাশের কোডে উপলভ্য নয়।


4
দুর্দান্ত উত্তর। আমি আরও দেখতে পেলাম যে এক্সকোড (9.2) পুনরায় আরম্ভ না করা পর্যন্ত ত্রুটিটি সরানো হবে না।
জাসঙ্গিস

9

Content জনসাধারণ হিসাবেও ঘোষণা করতে হবে:

public class Content {
  …
}

আপনার ব্যবহারের উপর নির্ভর করে আপনি Bucketঅভ্যন্তরীণ হিসাবেও ঘোষণা করতে পারেন । publicএই ক্ষেত্রে কীওয়ার্ডটি বাদ দিন ।


1

আমার ইস্যুটি একটি নেমস্পেসের সমস্যা ছিল।

আমি একটি এনাম নামক ঘোষনা দিয়েছিলাম Dataএবং এটি সুইফট Dataশ্রেণির সাথে মশকরা করছিল , বিশেষত imageData: Dataএকটি কোর ডেটা মডেলের মধ্যে একটি সম্পত্তি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.