在尝试将其内容分配给新变量/对象时,我使用NSDictionary获得错误。也许这是不可能的?我以为会的。我也不确定是否可以在字典中使用非objective C特定对象。你能吗?
NSDictionary *preProcessResult = [[NSDictionary alloc] initWithDictionary: [self preProcessing:testImage]];
IplImage* resultImage = [preProcessResult objectForKey:@"ResultImage"];
int numChars = [preProcessResult objectForKey:@"NumberChars"];
[preProcessResult release];
下面是我调用来创建字典的方法:
- (NSDictionary*) preProcessing: (IplImage*) testImage {
//do stuff to image
NSDictionary *testImage_andNumChars = [NSDictionary dictionaryWithObjectsAndKeys:resultImage,
@"ResultImage", numChars, @"NumberChars", nil];
return testImage_andNumChars;
}
这不是正确的处理方式吗?当我创建字典时得到的错误是:
"在传递参数时无法将'IplImage*'转换为'objc_object*' "
当我检索字典元素时,我得到:
"初始化时无法将'objc_object*'转换为'IplImage*' "one_answers"从'objc_object*'转换为'int'无效".
我已经阅读了NSDictionary上的苹果文档,它让我走了这么远,但我不确定从哪里开始。
简而言之,NSDictionary
的值必须是NSObject
的值。
您应该将int
存储为NSNumber
,例如:
[NSNumber numberWithInt:numChars]
当检索值时,您可以使用例如:
int numChars = [[preProcessResult objectForKey:@"NumberChars"] intValue];
IplImage是一个strict类型,numchars是一个int类型。因为它们都不是objective - c对象,所以不能将它们存储在字典中。您需要创建一个对象来表示它们。对于numchars,你应该存储一个NSNumber对象。要取回值,你会在你从objectForKey取回的NSNumber上调用intValue。
对于IplImage来说,这有点复杂。你可以把它包装在自己的类中,或者你可以扩展NSValue。
最主要的是字典只能存储objective c对象。
也不能将整数添加到字典中-它必须是一个对象。所以把你的整数用NSNumber括起来就可以了