[英]C++ / Objective-C++ - How can I store a C++ variable in an NSDictionary?
[英]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
直接存储任何用于键或值的内容。 您需要将对象/指针/值装在诸如NSValue
或NSNumber
类的目标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.