我有一项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
”。所以我不能使用它们。
我还尝试通过 a 中的索引复制所有对象for loop
,不,这些对象正在获取它们的值,但是当我“ addObject
”到时myDataArray
,相同,out of scope
。
这里有什么问题?我不能以这种方式生成自定义类的数组吗?
编辑:我正在生成 myDataArray 的代码:
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)
我之前也尝试过这种方式:
[myDataArray removeAllObjects];
duyurular = [result mutableCopy];
} //(End of callMyDataHandler function)