繁体   English   中英

如何在NSDictionary中将C ++变量存储为值?

[英]How to store a C++ variable as a value in NSDictionary?

我正在使用Objective-C ++进行编码,并希望将ObjC结构转换为C ++。 ObjC端变量位于const NSString* ,C ++端变量位于enum中。

我的项目使用ARC。

我这样做是这样的:

NSDictionary* myDict = [NSDictionary dictionaryWithObjectsAndKeys: My::NameSpace::enumVar, MyObjCVar, nil]

这给了我一个编译器错误:

Implicit conversion of 'int' to 'id' is disallowed with ARC.

是否存在将任何C ++类型存储到NSDictionary的通用方法?

除了NSObject指针( id类型)之外,您不能在NSDictionary直接存储任何用于键或值的内容。 您需要将对象/指针/值装在诸如NSValueNSNumber类的目标c对象中,或使用NSMapTable

由于字典的键必须是对象,并且当前使用的值是int ,因此应该可以将其转换为NSNumber对象:

[NSNumber numberWithInt:enumVal];

您可以这样做:

NSDictionary* myDict = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:My::NameSpace::enumVar], MyObjCVar, nil];

但是为什么不使用更现代的语法呢?

NSDictionary* myDict = @{MyObjCVar : @(My::NameSpace::enumVar)};

我非常喜欢第二种选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM