我试图在我的应用程序中调用webservices并在控制台中检查它时显示对象的数量(我正在使用可变数组),然后在尝试显示对象的名称时(此处对象是location
),它在这一行给我一个错误:
for (SDZArrayOfLocationWithLatestGrades* location in a) {
NSLog(@" - %@", location.Name); // error here and a is the mutable array
}
这是类SDZArrayOfLocationWithLatestGrades
@implementation SDZArrayOfLocationWithLatestGrades
+ (id) newWithNode: (CXMLNode*) node
{
return [[[SDZArrayOfLocationWithLatestGrades alloc] initWithNode: node] autorelease];
}
- (id) initWithNode: (CXMLNode*) node
{
if(self = [self init]) {
for(CXMLElement* child in [node children])
{
SDZLocationWithLatestGrades* value = [[SDZLocationWithLatestGrades newWithNode: child] object];
if(value != nil) {
[self addObject: value];
}
}
}
return self;
}
+ (NSMutableString*) serialize: (NSArray*) array
{
NSMutableString* s = [NSMutableString string];
for(id item in array) {
[s appendString: [item serialize: @"LocationWithLatestGrades"]];
}
return s;
}
@end
答案 0 :(得分:1)
在第一行SDZArrayOfLocationWithLatestGrades
表示您的位置对象是一个数组,当然没有Name
属性。我怀疑你的意思是别的。
答案 1 :(得分:1)
点语法,至少使用它的方式(即.Name)是1)C代码,用于访问C结构或C联合中的变量。确保数组a的内容是具有名为Name的属性的C结构(或联合),或2)用于访问类实例的合成属性的Objective-C代码。
这就是为什么其他人要求SDZArrayOfLocationWithLatestGrades的定义,它需要有一个名为Name的属性。
从变量名称(SDZArrayOfLocationWithLatestGrades)推断,听起来这是一个数组。如果SDZArrayOfLocationWithLatestGrades是包含具有属性Name的结构的数组,那么您使用的是快速枚举错误。
for (SDZArrayOfLocationWithLatestGrades* location in a)
在上面你要说的是,驻留在a中的变量是SDZArrayOfLocationWithLatestGrades *类型,这可能是错误的(除非你将数组存储在数组中)。您需要将SDZArrayOfLocationWithLatestGrades *替换为您在数组a中存储的变量类型。
错误的解释......但希望它有所帮助。
答案 2 :(得分:0)
SDZArrayOfLocationWithLatestGrades
类似乎没有Name
属性。这就是您无法访问它的原因。也许您打算使用 SDZArrayOfLocationWithLatestGrades中包含的对象的类型?