我正在使用一个应用程序,该应用程序使用XML和NSXMLParser获取apple live feed的RSS Feed。我将它分类为类别,以便与Steve Jobs相关的所有内容(我使用NSRange对字符串进行排序)将显示在该类别中。您可以使用UIPickerView选择一个类别。我有一个方法,只要找到财务类别,就会调用该方法。这是一个名为RSSItem的类:
if (revenue.location != NSNotFound || earnings.location != NSNotFound || quarter.location != NSNotFound) {
// categoryKey = @"Finance";
if (currentString) {
[arr addObject:currentString];
NSLog(@"%i" , [arr count]);
}
}
currentString是文章/ rss Feed帖子的标题字符串。现在我必须在实现中使arr成为一个静态变量,否则它总是变成一个空数组。现在它将数组记录为8.这是声明。
@implementation RSSItem
static NSMutableArray *arr;
所以现在我需要将该数组分发给名为Finance的TableViewController类,但每当我尝试它时总是空的。然后我尝试为TableViewController创建一个模型,它是RSSItem的子类。我需要在这个新类中访问该静态变量。我可以创建静态属性或变量吗?如果我不能这样做,你可以为我提供一种分发这个阵列的方法,而不是让它变得空洞。我实际上不确定它为什么变空。如果你知道原因,请告诉我,并回答我的上述问题。谢谢!
答案 0 :(得分:1)
声明为静态最像是有一个类变量。假设我正确理解了你的问题,你有一个你想要传递给另一个类的类创建的数组吗?
在你的RSSItem类中我会有一个属性
@property (retain) NSMutableArray *array;
当然,你需要综合它
@synthesize array = _array;
在你的init方法中为你RSSItem类:
- (id)init {
self = [super init];
if (self) {
self.array = [NSMutableArray array];
}
}
这将为您提供一个空的NSMutableArray来使用
然后代替你的行
[arr addObject:currentString];
使用:
[self.array addObject:currentString];
在您的表控制器中,您可以访问您的RSSItem对象实例,因此您可以通过执行以下操作来访问其数组:
NSArray *arrayInTableController = (NSArray *)myRSSItem.array
最后,您需要确保在RSSItem类中覆盖dealloc:
- (void)dealloc {
self.array = nil;
[super dealloc];
}
这应该允许您在表控制器中获取数组。然后你可以随心所欲地做它。
希望这对你有所帮助。如果您发现不清楚或需要任何进一步的帮助,请不要犹豫,让我知道:)