我有一个带有初始化程序的类,它接受一个NSDictionary:
-(id)initWithVector:(NSDictionary *) vectorDictionary;
Run Code Online (Sandbox Code Playgroud)
当我试图传递一个NSDictionary时,它给了我一个错误:
将'VectorClass*_strong'发送到参数类型'NSDictionary*'的不兼容的点类型
码:
// 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];
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我转换(NSDictionary*)矢量,没有警告.
vector应该是一本字典,为什么我会收到警告?
您对两个不同的变量使用相同的名称.最内部变量是VectorClass在同一行中定义的类型,因此编译器会尝试将其传递给init方法,而是更改其名称:
VectorClass *vectorC = [[VectorClass alloc] initWithVector:vector];
[vectorC retrieveVectorAttributeTable];
[vectorC retrieveVectorMetadataTable];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39 次 |
| 最近记录: |