Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用未声明的标识符';createWithNode';_Objective C_Undeclared Identifier - Fatal编程技术网

Objective c 使用未声明的标识符';createWithNode';

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

请原谅我的无知,我是一个新手iOS编码:)

我从Sudzc下载了一个带有示例的项目,它创建了支持iOS与基于SOAP的web服务连接的代码。我将代码集成到我的项目中,当我运行项目时,在为处理web服务中的长值数组而创建的一个类中出现编译错误。谁能告诉我问题是什么?我被难住了

我得到的错误是

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倍