我有一个SOAP
服务,我在SudzC.com上生成了类和函数。
所以我使用他们生成的soap函数,它返回一个NSMutableArray
,其中包含由我的自定义类继承的对象(也由它们生成)。
到目前为止一切都很好。我的值进入数组,我可以看到任何具有一个条件的对象的任何属性:只在处理服务的函数内部。
为了说清楚,这是代码:
- (void)viewDidLoad
{
SDZGeneratedWebService* service = [SDZGeneratedWebService service];
service.logging = YES;
[service callMyData:self action:@selector(callMyDataHandler:) dataId: 1];
[super viewDidLoad];
}
- (void) callMyDataHandler: (id) value {
// Handle errors
if([value isKindOfClass:[NSError class]]) {
NSLog(@"%@", value);
return;
}
// Handle faults
if([value isKindOfClass:[SoapFault class]]) {
NSLog(@"%@", value);
return;
}
// Do something with the NSMutableArray* result
NSMutableArray *result = (NSMutableArray *)value;
MyCustomClass *myObject = [result objectAtIndex:0];
NSLog(@"%@", myObject.myProperty); //Works Great
}
像我说的那样,到目前为止一切都很完美。但是我需要使用此函数之外的数据。
因此,在我的.h
文件中,我创建了一个类似NSMutableArray *myDataArray;
当我打算将result
数组复制到myDataArray
时,它会复制对象(我可以看到myDataArray.count
值等于result
数组)但是所有对象是“out of scope
”。所以我不能使用它们。
我还尝试按for loop
中的索引复制所有对象,nope,对象获取其值,但当我“addObject
”到myDataArray
时,同样,{{ 1}}。
这里有什么问题?我不能以这种方式生成自定义类的数组吗?
编辑:我正在生成myDataArray的代码:
out of scope
我之前尝试过这种方式:
myDataArray = [[NSMutableArray alloc] init];
[myDataArray removeAllObjects];
for (int i=0; i<((NSMutableArray *)result).count; i++) {
MyCustomClass *myObject = [result objectAtIndex:i];
[myDataArray addObject:myObject];
[myObject release];
}
[self.tableView reloadData];
} //(End of callMyDataHandler function)
答案 0 :(得分:0)
您可以使用以下方法将对象从一个数组复制到另一个数组:
NSArray *source;
NSArray *dst = [[NSArray alloc] initWithArray:source];
在您的代码中,您应该删除行:[myObject release];
,我最好调用[((NSMutableArray *)result) count]
,而不是使用点表示法。