উদাহরণ থেকে ক্লাসের নামকরণ করা Get


142

আমার নিম্নলিখিত সমস্যা আছে: আমি একটি ক্লাস পাসের একটি উদাহরণ পাই এবং এই উদাহরণটির শ্রেণীর নাম জানতে চাই। কিভাবে এটা পেতে হবে?


সম্ভবত আপনার প্রশ্নটির উচ্চারণ করুন বা প্রশ্নের সাথে মিলছে এমন উত্তরটি গ্রহণ করুন?
জ্যাস্পার ব্লুজ

@ য্যাস্পার ব্লু: সম্পন্ন, এটি এতটা জনপ্রিয় কী তা বুঝতে পারেনি!
রবিন

উত্তর:


396

NSStringFromClass([instance class]) কৌতুক করা উচিত।


33
প্রশ্নের উত্তর দেওয়ার জন্য উত্সাহিত করা হয়েছে যাতে গুগলেরা প্রয়োজন অনুমানের পরিবর্তে উত্তর পেতে পারে।
গ্লেনো

2
#import <objc/objc-runtime.h>উদাহরণস্বরূপ ক্লাস কল করতে সক্ষম মনে রাখবেন ।
জেপি ইলানেস

28

আপনি যা করতে চান তা হ'ল এটি কোনও নির্দিষ্ট শ্রেণীর এক ধরণের কিনা তা দেখার জন্য কোনও বস্তুর পরীক্ষা করা

BOOL test = [self isKindOfClass:[SomeClass class]];

18

ক্লাসের মধ্যে থেকেই

-(NSString *) className
{
    return NSStringFromClass([self class]);
}

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

@ দাদান আমি দেখতে পাচ্ছি আপনি আমাকে নীচে শিকার করছেন। তোমার জন্য ভালো!
কেটেড্রাল পিলন

দুঃখিত, আমি এটিকে কেবল ক্লিক করেছি এবং কিছু বলব কিনা তা নিয়ে বিতর্ক করেছি। কিছুটা মৃদু ribing করতে চেয়েছিলেন, কিন্তু আমি জানি যে এই আধ-মুখবিহীন সেটিংগুলিতে মেজাজগুলি খুব দ্রুত গরম হয়ে যায়। এটি সম্পর্কে ভাল প্রকৃতির জন্য ধন্যবাদ। (আসলে, এনক্যাপসুলেশন অনুশীলনের জন্য +1)।
ডানহ

2
এটি উত্তর ব্যতীত ঝামেলা ব্যতীত আর কিছুই যোগ করে না।
নিকোলাই রুহে

1
এটিকে একটি
শ্রেণিবদ্ধ

2

কেবল একটি বিভাগ যুক্ত করুন:

NSObject+Extensions.h
- (NSString *)className;

NSObject+Extensions.m
- (NSString *)className {
    return NSStringFromClass(self.class);
}

তারপরে নিম্নলিখিত কোডটি ব্যবহার করুন:

NSString *className = [[SomeObject new] className];

অথবা এমনকি:

NSString *className = SomeObject.new.className;

এটিকে যে কোনও জায়গায় ব্যবহার করতে আপনার বিভাগে যুক্ত করুন।


যদি একটি সুইফ্ট শ্রেণিতে কল করা হয়, এটি একটি নেমস্পিড শ্রেণিকাম দেয়।
আল্পার


1

OBJC:

NSStringFromClass([instance class])

স্যুইফ্ট

উদাহরণ থেকে:

String(describing: YourType.self)

প্রকার থেকে:

String(describing: self)

0

আপনি যদি স্যুইফটে ক্লাসের নামটি কীভাবে দেখতে পান তবে আপনি অবজেক্ট সম্পর্কিত তথ্য পাওয়ার জন্য প্রতিবিম্ব ব্যবহার করতে পারেন।

let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
    println(typeName)
}

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