Objective c 使用未声明的标识符';createWithNode';
请原谅我的无知,我是一个新手iOS编码:) 我从Sudzc下载了一个带有示例的项目,它创建了支持iOS与基于SOAP的web服务连接的代码。我将代码集成到我的项目中,当我运行项目时,在为处理web服务中的长值数组而创建的一个类中出现编译错误。谁能告诉我问题是什么?我被难住了 我得到的错误是Objective c 使用未声明的标识符';createWithNode';,objective-c,undeclared-identifier,Objective C,Undeclared Identifier,请原谅我的无知,我是一个新手iOS编码:) 我从Sudzc下载了一个带有示例的项目,它创建了支持iOS与基于SOAP的web服务连接的代码。我将代码集成到我的项目中,当我运行项目时,在为处理web服务中的长值数组而创建的一个类中出现编译错误。谁能告诉我问题是什么?我被难住了 我得到的错误是 IIDArrayOflong.m:20:26: Use of undeclared identifier 'createWithNode' 这是类代码。我标记了这条线,抛出了错误 @implementati
IIDArrayOflong.m:20:26: Use of undeclared identifier 'createWithNode'
这是类代码。我标记了这条线,抛出了错误
@implementation IIDArrayOflong
+ (id) createWithNode: (CXMLNode*) node
{
return [[[self alloc] initWithNode: node] autorelease];
}
- (id) initWithNode: (CXMLNode*) node
{
if(self = [self init]) {
for(CXMLElement* child in [node children])
{
//**ERROR THROWN ON THE NEXT LINE
long long value = [[ createWithNode: child] object];
[self addObject: value];
}
}
return self;
}
+ (NSMutableString*) serialize: (NSArray*) array
{
NSMutableString* s = [NSMutableString string];
for(id item in array) {
[s appendString: [NSString stringWithFormat: @"%lld", item]];
}
return s;
}
@end
此外,对于变量声明为什么是
long long value = ...
这是什么意思
提前感谢您的帮助 您尚未提供要调用选择器的对象。因为
createWithNote:
是一个类方法,所以应该在类上调用它
long long value = [[[self class] createWithNode: child] object];
long-long值=
相当于int64\u-t值=
。它声明了一个名为value
的变量,它是一个64位整数。需要指出的一点是,方法声明之前的+
表示它是一个类方法,而不是实例方法之前的-
。在每对大括号中应该有一个收件人和一个方法,因此对于类方法[SomeClass methodName:parameter]
和实例方法[anInstance methodName:parameter]
请向右看[createWithNode:child]
在方法名称的左边缺少一个收件人。您好,@Ian MacDonald,我也有同样的问题-我理解您的解释,10倍于此,但在设置更正后,我在下一行遇到了一个问题“不允许使用ARC将“long long”隐式转换为“id”,并在同一行发出警告。我知道SUDZC试图将long值设置为指针,并通过反之亦然,但我不知道如何修复它。您能给我一些建议吗?@new2ios:这个问题使用的-[IIDArrayOfLong object]
选择器被定义为返回一个long
值。您需要使用适合自己使用的变量类型捕获此方法的返回值。对于quick replay@Ian MacDonald,返回值为10倍。我理解。我用[self addObject:[[self class]createWithNode:child]object]替换了这两行代码>。当我到达那个阶段时,我必须检查这是否是正确的解决方案,但现在我可以编译我的项目。又是10倍