iphone:无法将数组的实例复制到另一个数组

时间:2011-04-22 18:06:32

标签: iphone core-data

不管为什么会发生这种情况我有一个方法getOutage,它返回一个托管对象数组

NSArray *fetchedOutages = [context executeFetchRequest:fetchRequest error:&error];
if (error) {
    NSLog(@"Error in Core Data: %@", [error description]);
}
return fetchedOutages;

当我尝试将此数组复制到listOutage(这是一个属性)

@property (nonatomic, retain) NSArray *listOutage

我试图在didRowSelectMethod中像这样复制这个数组

if (listOutage) {
        NSLog(@"Its there");
        [listOutage release];
    }

    listOutage=[[NSArray alloc] initWithArray:[self getOutage]];

我尝试了其他各种方法,但所有方法都失败了。

这个getoutage方法返回5个对象,在listOutage中复制了五个对象但是当我尝试访问listOutage元素时,它们显示为“超出范围” 请帮助我克服这个问题,我必须将它传递给下一个ViewController。

提前致谢

1 个答案:

答案 0 :(得分:1)

当有属性时,使用'self.property'代替'property',当有人读你的代码时,如果你指的是ivar或属性,那就更明显了。

如果您使用self.property,则无需编写

if (listOutage) {
        NSLog(@"Its there");
        [listOutage release];
    }

    listOutage=[[NSArray alloc] initWithArray:[self getOutage]];

相反,只需写

NSArray newListOutage=[[NSArray alloc]  initWithArray:[self getOutage]];
self.listOutage = newListOutage;
[newListOutage release];

发布和保留将由@synthesize属性生成的get / set方法处理。