0

我有一项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)
4

1 回答 1

0

您可以使用以下方法将对象从一个数组复制到另一个数组:

NSArray *source;
NSArray *dst = [[NSArray alloc] initWithArray:source];

在您的代码中,您应该删除 line:[myObject release];并且我最好调用[((NSMutableArray *)result) count]而不是使用点表示法。

于 2011-10-06T09:37:52.037 回答