আমি কিভাবে সুইফটে ক্লাসের পদ্ধতি / বৈশিষ্ট্যগুলি তৈরি করব?


98

অবজেক্টিভ-সি-তে ক্লাস (বা স্ট্যাটিক) পদ্ধতিগুলি +ঘোষণাপত্রের সাহায্যে সম্পন্ন হয়েছিল ।

@interface MyClass : NSObject

+ (void)aClassMethod;
- (void)anInstanceMethod;

@end

কীভাবে এটি সুইফটে অর্জন করা যায়?

উত্তর:


153

এগুলিকে টাইপ প্রপার্টি এবং টাইপ পদ্ধতি বলা হয় এবং আপনি classবা staticকীওয়ার্ড ব্যবহার করেন ।

class Foo {
    var name: String?           // instance property
    static var all = [Foo]()    // static type property
    class var comp: Int {       // computed type property
        return 42
    }

    class func alert() {        // type method
        print("There are \(all.count) foos")
    }
}

Foo.alert()       // There are 0 foos
let f = Foo()
Foo.all.append(f)
Foo.alert()       // There are 1 foos

4
আমি মনে করি না এটি কেবল খেলার মাঠে সীমাবদ্ধ, এটি কোনও অ্যাপ্লিকেশনেও সংকলন করে না।
এরিক কার্বার

@ এরিককারবার জেনে রাখা ভাল, এখনও তাদের প্রয়োজন হয়নি তাই আমার নিজের পরীক্ষা করা হয়নি, ধন্যবাদ।
পাস্কাল

এক্সকোড .2.২ এখনও 'শ্রেণীর ভেরর নাম: টাইপ' ফর্মের কোনও কিছুর বিপরীতে 'শ্রেণীর ভেরিয়েবলগুলি এখনও সমর্থিত নয়' বলে প্রতিবেদন করে।
আলী বিডল

সুইফট ২.০+ তে classকোনও ফাংশন বা গণিত প্রকারের সম্পত্তির আগে আপনার কীওয়ার্ডের দরকার নেই ।
গোবিন্দ রাই

21

এগুলিকে টাইপ প্রপার্টি বলা হয় এবং সুইফটে টাইপ পদ্ধতি এবং আপনি ক্লাস কীওয়ার্ডটি ব্যবহার করেন।
একটি শ্রেণিবদ্ধ পদ্ধতি বা দ্রুত পদ্ধতিতে টাইপ পদ্ধতি ঘোষণা:

class SomeClass 
{
     class func someTypeMethod() 
     {
          // type method implementation goes here
     }
}

এই পদ্ধতিতে অ্যাক্সেস করা:

SomeClass.someTypeMethod()

বা আপনি দ্রুত পদ্ধতিতে উল্লেখ করতে পারেন


তোমাকে অনেক ধন্যবাদ! এটি উদ্দেশ্য-সি-তে একটি এনএসবজেক্ট শ্রেণীর চেয়েও সহজ এবং এটি ইতিমধ্যে সেটআপ করা বেশ সহজ ছিল।
সুপারট্যাকনোবফ

15

ঘোষণাপত্রটি classযদি এটি কোনও শ্রেণি হয়, বা staticএটি কোনও কাঠামোযুক্ত থাকে তবে তা প্রস্তুত করুন।

class MyClass : {

    class func aClassMethod() { ... }
    func anInstanceMethod()  { ... }
}

আপনার funcকিওয়ার্ডটির এখানে দরকার নেই?
জ্যামি ফরেস্ট

4
অবশ্যই. ভিড় করে বাসে দাঁড়ানোর সময় প্রশ্নের উত্তর দেওয়ার জন্য আমাকে সেবা দেয় ol সংশোধন করা হয়েছে।
অ্যানালগ ফাইল

4

সুইফট ১.১ এ শ্রেণীর বৈশিষ্ট্য নেই। ক্লোজ অবজেক্টের সাথে আবদ্ধ কোনও সম্পর্কিত বস্তুটি এনে ক্লোজার ক্লাসের সম্পত্তি ব্যবহার করে আপনি এটি প্রয়োগ করতে পারেন। (কেবলমাত্র এনএসবজেক্ট থেকে প্রাপ্ত ক্লাসগুলিতে কাজ করে))

private var fooPropertyKey: Int = 0  // value is unimportant; we use var's address

class YourClass: SomeSubclassOfNSObject {

    class var foo: FooType? {  // Swift 1.1 doesn't have stored class properties; change when supported
        get {
            return objc_getAssociatedObject(self, &fooPropertyKey) as FooType?
        }
        set {
            objc_setAssociatedObject(self, &fooPropertyKey, newValue, objc_AssociationPolicy(OBJC_ASSOCIATION_RETAIN_NONATOMIC))
        }
    }

    ....
}

আমি সুইফট শিখছি এবং ভাবছি যে আপনি যদি সুইফ্ট শ্রেণীর উদাহরণগুলির সাথে সম্পর্কিত বিষয়গুলি সংযুক্ত করতে পারেন। মনে হচ্ছে উত্তরটি "সাজানো"। (হ্যাঁ, তবে কেবলমাত্র এনজবজেক্টের একটি সাবক্লাস অবজেক্টস)) আমার জন্য এটি সমাধান করার জন্য ধন্যবাদ। (ভোট দিয়েছেন)
ডানকান সি

4

ক্লাস বা স্ট্যাটিকের সাথে যদি এটি কোনও ফাংশন হয় তা ঘোষণা করে বা এটি কোনও সম্পত্তি হলে স্থির সাথে প্রস্তুত করুন।

class MyClass {

    class func aClassMethod() { ... }
    static func anInstanceMethod()  { ... }
    static var myArray : [String] = []
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.