首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要排版

需要排版
EN

Stack Overflow用户
提问于 2012-10-03 19:23:20
回答 1查看 42关注 0票数 0

我有一个带有初始化器的类,它接受一个NSDictionary:

代码语言:javascript
复制
-(id)initWithVector:(NSDictionary *) vectorDictionary;

当我试图传递一个NSDictionary时,它给了我一个错误:

不兼容的点类型将“‘VectorClass*_strong”发送到参数类型“NSDictionary*”

代码:

代码语言:javascript
复制
// myVectorList is an array of dictionaries
for (NSDictionary *vector in self.myFielder.myVectorList)
{
    if ([vector isKindOfClass:[NSDictionary class]])
    {
        // hardcoded for testing purposes 
        if ([[vector objectForKey:HANDLE] isEqualToString:@"pt07p48u17aj75qx8n2fri9jlkrc262yt8"])
        {
            // GET THE WARNING ON PASSING "VECTOR"
            VectorClass *vector = [[VectorClass alloc] initWithVector:vector];

            [vector retrieveVectorAttributeTable];
            [vector retrieveVectorMetadataTable];
        }
    }
}

如果我键入(NSDictionary *)向量,没有警告。

向量应该是字典,那么为什么我会收到警告呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-03 19:25:05

对两个不同的变量使用相同的名称。内部最变量的类型是在同一行中定义的VectorClass类型,因此编译器尝试将其传递给init方法,而是更改其名称:

代码语言:javascript
复制
VectorClass *vectorC = [[VectorClass alloc] initWithVector:vector];
[vectorC retrieveVectorAttributeTable];
[vectorC retrieveVectorMetadataTable];
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12715383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档