যেকোনওজেক্ট এবং যে কোনও ইন সুইফট


92

কখন অ্যানোবজেক্টটি ব্যবহার করতে হবে এবং কখন কোনও সুইফটে ব্যবহার করতে হবে তা আমি বুঝতে পারি না।

আমার ক্ষেত্রে, আমি একটি অভিধান করছি

[স্ট্রিং: ???]

??? : ইনট, ডাবল, ফ্লোট, স্ট্রিং, অ্যারে, অভিধান হতে পারে

কেউ আমাকে যে কোনও এবং যে কোনও বিষয় এবং আমার ক্ষেত্রে কোনটি ব্যবহার করতে হবে তার মধ্যে পার্থক্যটি ব্যাখ্যা করতে পারেন।

অলক

উত্তর:


116

AnyObjectকেবলমাত্র রেফারেন্স ধরণের (শ্রেণি) জন্য, Anyমান এবং রেফারেন্স উভয় প্রকারের জন্য।

সুতরাং আপনার জন্য যাওয়া উচিত [String: Any]

যেকোন এবং যেকোনওজেক্টের জন্য কাস্টিং টাইপ করুন

অবিচ্ছিন্ন প্রকারের সাথে কাজ করার জন্য সুইফট দুটি বিশেষ ধরণের সরবরাহ করে:

  • Any ফাংশন প্রকার সহ মোটে যে কোনও ধরণের উদাহরণ উপস্থাপন করতে পারে।
  • AnyObject যে কোনও শ্রেণির ধরণের উদাহরণ উপস্থাপন করতে পারে।

বিঃদ্রঃ:

ব্যবহার করুন Anyএবং AnyObjectকেবল যখন আপনার স্পষ্টভাবে তাদের দেওয়া আচরণ এবং দক্ষতার প্রয়োজন হয়। আপনি আপনার কোডটিতে যে ধরণের সাথে কাজ করবেন বলে সুনির্দিষ্ট থাকে তা সবসময় ভাল।

থেকে সুইফট প্রোগ্রামিং ভাষা : https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-ID342

-

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

-

সম্পাদনা: (ডিসেম্বর 22, 2015)
শেষ বিবৃতিতে, নোট করুন যে এটি সুইফট ২.০ এবং এক্সকোড with এর সাথে পরিবর্তিত হচ্ছে
Apple অ্যাপল উদ্দেশ্যমূলক-সিতে 'লাইটওয়েট' জেনেরিকগুলি চালু করেছে তাই প্রচুর কোকো এপিআই ইতিমধ্যে ইতিমধ্যে সঠিক প্রকারটি প্রদান করে।

সম্পাদনা: (অক্টোবর 18, 2016)
নোট করুন, সুইফট 3.0 হিসাবে, অবজেক্টিভ-সিগুলি idএখন Anyআর হিসাবে নয়, আমদানি করা হয় AnyObject


18
নোট করুন String, Arrayএবং Dictionaryক্লাস নয়, এই ব্যবহারের জন্য যে কোনও।
জাফ

6
নর ইন্ট, ডাবল এবং ফ্লোট নয়।
তেজয়

12
হ্যাঁ তবে এটি সাধারণত স্পষ্ট। এটি এতটা স্পষ্ট নয় যে NSString, NSArrayএবং NSDictionaryক্লাসগুলি এখনও একইভাবে কার্যকরী সুইফট সংস্করণগুলি ক্লাস নয় এবং এটি অনেকগুলি ডিভ আপ করে।
জাফ

4
কোনও বিকল্প কি উপস্থাপন করে? বা এটি কোনও হিসাবে প্রকাশ করা উচিত?

4
@robdashnash যে কোনও বিকল্পগুলি উপস্থাপন করে না। ? এটি
ক্রিপ্ট

47

আপনি ব্যবহার করেন Anyবা AnyObjectআপনার উদ্দেশ্যে ব্যবহার নির্ভর করে:

আপনার অভিধান শুধুমাত্র সুইফট কোডের ভিতর ব্যবহার করা হবে, তাহলে আপনি ব্যবহার করা উচিত Anyআপনার ধরনের (কারণ Int, Double, Float, String, Array, এবং Dictionary) নয় অবজেক্ট।

আপনি যদি আপনার অভিধানটি যদি উদ্দেশ্য-সি রুটিনগুলিতে প্রত্যাশা করেন যা একটি প্রত্যাশা করে NSDictionary, তবে আপনার ব্যবহার করা উচিত AnyObject

যখন আপনি import Foundationবা import UIKitবা import Cocoa, এটা হিসাবে আপনার অ্যারের ঘোষণা করা সম্ভব [String: AnyObject]আপনার, কিন্তু এই ক্ষেত্রে সুইফট চিকিত্সা করা হয় Int, Double, Floatলিটারেল যেমন NSNumber, আপনার Stringযেমন গুলি NSString, আপনার Arrayযেমন গুলি NSArrayও আপনার অভিধান NSDictionary, যার মধ্যে সব বস্তু। AnyObjectমান প্রকার হিসাবে ব্যবহার করা একটি অভিধানে রূপান্তরযোগ্য NSDictionaryতবে ব্যবহার করা Anyএকটি নয়।


1

অ্যাপলের সুইফ্ট ডকুমেন্টেশন অনুসারে,

  • যে কোনও ফাংশনের ধরণ এবং alচ্ছিক প্রকার সহ মোটে যে কোনও ধরণের উদাহরণ উপস্থাপন করতে পারে।
  • যেকোনওবজেক্ট যে কোনও শ্রেণির ধরণের উদাহরণ উপস্থাপন করতে পারে।

আরও তথ্যের জন্য দয়া করে এটি পরীক্ষা করুন: ব্লগ


1

এই উত্তরটি দেখুন :

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

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