我想用一个Integer Mapping创建一个NSMutableDictionary到一个strucuter(struct).例:
int nVar = 1;
typedef struct
{
NSString *pstrName;
}sSampleStruct;
sSampleStruct *sObject = {@"test"};
NSMutableDictioary *pSampleMap = [[NSMutableDictioary allo] init];
[pSampleMap setObject:sObject forKey:[[nsnumber alloc] initwithint:nVar];
Run Code Online (Sandbox Code Playgroud)
这是我想做的事情?但由于结构不是一个对象,它会发出警告吗?无论如何,我可以用strutures创建一个字典.或者以任何其他方式创建具有结构的地图?
请尽快回复.....
谢谢普拉迪普.
Joo*_*ost 12
看看NSValue:
[pSampleMap setObject:[NSValue value:&sObject withObjCType:@encode(sSampleStruct)] forKey:[NSNumber numberWithInt:nInt]];
Run Code Online (Sandbox Code Playgroud)
此外,[[NSNumber alloc] initWithInt:nVar]由于Objective-C区分大小写,因此您的内存泄漏并且您的代码甚至无法编译.
你是对的,因为NSDictionary中的键和值都必须是对象.你在寻找什么NSValue.
来自文档:
NSValue对象是单个C或Objective-C数据项的简单容器.它可以包含任何标量类型,如int,float和char,以及指针,结构和对象id.此类的目的是允许将此类数据类型的项添加到集合中,例如NSArray和NSSet的实例,这些集合要求其元素为对象.NSValue对象始终是不可变的.
类似的东西(稍微清理代码):
typedef struct
{
NSString *pstrName;
} sSampleStruct;
// Changed sObject to non-pointer so it can be initialized with a literal
sSampleStruct sObject = {@"test"};
// Corrected spelling of NSMutableDictionary
NSMutableDictionary *pSampleMap = [[NSMutableDictionary alloc] init];
// Changed to [NSNumber numberWithInt:] to avoid leaking memory
// Corrected spelling and capitalization of NSNumber
[pSampleMap setObject:[NSValue valueWithPointer:&sObject]
forKey:[NSNumber numberWithInt:nVar]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9368 次 |
| 最近记录: |