/ / एनएस डिक्शनरी घोषित करें और इसे स्विफ्ट में मुख्य मूल्य जोड़ी डालें? - आईओएस, आईफोन, तेज़

एनएस डिक्शनरी घोषित करना और इसे स्विफ्ट में महत्वपूर्ण मूल्य जोड़ी डालना? - आईओएस, आईफोन, तेज़

मैं कक्षा प्रकार कुंजी और इस तरह के मूल्य के साथ एक NSDictionary घोषित करने की कोशिश कर रहा हूं:

var catAndSubCatDict: NSDictionary<Category, Array<SubCategory>> = NSDictionary<Category, Array<SubCategory>>()

यहां, "श्रेणी" और "उपश्रेणी" वैश्विक हैंकक्षाएं। मुझे पता है कि मैं कुंजी क्षेत्र के लिए कक्षा प्रकार का उपयोग नहीं कर सकता। हालांकि, मुझे वैसे भी इसे हासिल करना चाहिए। क्या इसे करने का कोई तरीका है ? ऐसा करने के लिए मैं विशेष एनएस डिक्शनरी या इसी तरह की चीजें कैसे घोषित कर सकता हूं?

इसके अलावा, मैं इस शब्दकोश का उपयोग इस तरह करता हूं:

for(var i=0; i<resultJson.count; i++)
{
let subCategoryItemList = resultJson.objectAtIndex(i) as NSDictionary
let categoryItem = subCategoryItemList.valueForKey(WSConstants.CATEGORY_OBJ) as NSDictionary

var category: Category = Category()
category.categoryId    = categoryItem.valueForKey(WSConstants.CATEGORY_ID) as Int
category.categoryName  = categoryItem.valueForKey(WSConstants.NAME) as String

var subCategoryList: Array<SubCategory> = []
let jsonSubCategoryList = subCategoryItemList.allKeysForObject(WSConstants.SUBCATEGORY_LIST_OBJ) as NSArray

for(var i=0; i<jsonSubCategoryList.count; i++)
{
let subCategoryObj = jsonSubCategoryList.objectAtIndex(i) as NSDictionary

var subCategory: SubCategory = SubCategory()
subCategory.subCategoryId    = subCategoryObj.valueForKey(WSConstants.SUBCATEGORY_ID) as Int
subCategory.subCategoryName  = subCategoryObj.valueForKey(WSConstants.NAME) as String
subCategory.subCategoryType  = subCategoryObj.valueForKey(WSConstants.SUBCATEGORY_TYPE) as Int

subCategoryList.append(subCategory)
}
self.catAndSubCatDict.setValue(category, forkey: subCategoryList) // Also, I have to achieve this
}

आपके जवाबों के लिये धन्यवाद,

सादर

उत्तर:

उत्तर № 1 के लिए 13

NSDictionary कर देता है नहीं समर्थन जेनेरिक, इसलिए आप इस तरह से घोषित नहीं कर सकते - अगर आप इसका उपयोग करना चाहते हैं, तो इसे निम्नानुसार तुरंत चालू करें:

var catAndSubCatDict: NSDictionary = NSDictionary()

स्विफ्ट एक नया शब्दकोश प्रकार प्रदान करता है, जो जेनेरिक का समर्थन करता है, और इसे बनाने के लिए आपको बस प्रतिस्थापित करना होगा NSDictionary साथ में Dictionary आपके कोड में:

var catAndSubCatDict: Dictionary<Category, Array<SubCategory>> = Dictionary<Category, Array<SubCategory>>()

या इन कॉम्पैक्ट रूपों में से एक का उपयोग करें:

var catAndSubCatDict: [Category : Array<SubCategory>] = [Category : Array<SubCategory>]()

var catAndSubCatDict: [Category : [SubCategory]] = [Category : [SubCategory]]()

ध्यान दें कि उपरोक्त वर्णित सभी मामलों में आप प्रकार अनुमान का उपयोग कर सकते हैं और चर प्रकार को हटाकर कोड को छोटा कर सकते हैं:

var catAndSubCatDict = NSDictionary()
var catAndSubCatDict = Dictionary<Category, Array<SubCategory>>()
var catAndSubCatDict = [Category : Array<SubCategory>]()
var catAndSubCatDict = [Category : [SubCategory]]()

आखिरकार, तेज़ शब्दकोशों के साथ कर सकते हैं एक वर्ग को कुंजी के रूप में उपयोग करें - आपको क्या करना है कुंजी वर्ग बनाना है (Category अपने कोड में) लागू करें Hashable तथा Equatable प्रोटोकॉल