ios – 声明NSDictionary并在Swift中添加键值对?

ios – 声明NSDictionary并在Swift中添加键值对?,第1张

概述我一直在尝试使用类类型键和值来声明一个NSDictionary,如下所示: var catAndSubCatDict: NSDictionary<Category, Array<SubCategory>> = NSDictionary<Category, Array<SubCategory>>() 这里,“Category”和“SubCategory”是全局类.我知道我不能将类类型用于关键字段.但 我一直在尝试使用类类型键和值来声明一个NSDictionary,如下所示:
var catandSubCatDict: NSDictionary<category,Array<Subcategory>> = NSDictionary<category,Array<Subcategory>>()

这里,“category”和“Subcategory”是全局类.我知道我不能将类类型用于关键字段.但是,无论如何,我应该做到这一点.有没有办法做到这一点?如何声明专门的NSDictionary或类似的东西来做到这一点?

另外,我使用这样的字典:

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}

谢谢您的回答,

最好的祝福

解决方法 NSDictionary不支持泛型,因此您无法声明这种方式 – 如果要使用它,请按如下方式对其进行实例化:
var catandSubCatDict: NSDictionary = NSDictionary()

Swift提供了一个新的字典类型,它支持泛型,并且要创建它,你只需要在代码中用字典替换NSDictionary:

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]]()

最后,使用swift词典,您可以使用类作为键 – 您需要做的是使密钥类(代码中的类别)实现Hashable和Equatable协议

总结

以上是内存溢出为你收集整理的ios – 声明NSDictionary并在Swift中添加键值对?全部内容,希望文章能够帮你解决ios – 声明NSDictionary并在Swift中添加键值对?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1101332.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存