iphone将值传递给其他类

时间:2010-11-13 10:45:45

标签: iphone objective-c class core-data

我在RootViewController.m中有一些代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

 NSManagedObject *selectedObject = [[self fetchedResultsController] objectAtIndexPath:indexPath];
 BlogRssParser *blogRss = [[BlogRssParser alloc] init];
 blogRss.terms = [[selectedObject valueForKey:@"data"] description];
 //[blogRss setSelectedObject:selectedObject];
 NSLog(@"%@", blogRss.terms);

 RssFunViewController *rssFun = [[RssFunViewController alloc] initWithNibName:@"RssFunViewController" bundle:nil];
 [self.navigationController pushViewController:rssFun animated:YES];
 [rssFun release];

}

因此,当用户单击该行时,它将转到RssFunViewController。但它使用BlogRssParser来填充RssFun的tableview。所以我试图在它之间插入并从RootView向BlogRss发送一个值,这样就可以用正确的数据填充RssFun。

我在BlogRssParser.m中有这个:

-(BOOL)fetchAndParseRss{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

    //To suppress the leak in NSXMLParser
    [[NSURLCache sharedURLCache] setMemoryCapacity:0];
    [[NSURLCache sharedURLCache] setDiskCapacity:0];

    NSLog(@"%@", self.terms);

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://news.search.yahoo.com/rss?ei=UTF-8&p=%@&fr=news-us-ss", self.terms]];
    NSLog(@"%@", url);

    BOOL success = NO;
    NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
    [parser setDelegate:self];
    [parser setShouldProcessNamespaces:YES];
    [parser setShouldReportNamespacePrefixes:YES];
    [parser setShouldResolveExternalEntities:NO];
    success = [parser parse];
    [parser release];
    [pool drain];
    return success;
}

在控制台中,RootView中的术语日志具有正确的值。但是在BlogRssParser中,它出现为(null)。我已将条款声明为BlogRssParser.m中的属性。

这就是我宣布它的方式:

 @interface BlogRssParser : NSObject {
    BlogRss * _currentItem;
    NSMutableString * _currentItemValue;
    NSMutableArray * _rssItems;
    id<BlogRssParserDelegate> _delegate;
    NSOperationQueue *_retrieverQueue;
    //NSManagedObject *selectedObject;
    NSString *terms;
}


@property(nonatomic, retain) BlogRss * currentItem;
@property(nonatomic, retain) NSMutableString * currentItemValue;
@property(readonly) NSMutableArray * rssItems;
//@property(nonatomic,retain) NSManagedObject *selectedObject;
@property(nonatomic, retain) NSString *terms;

@property(nonatomic, assign) id<BlogRssParserDelegate> delegate;
@property(nonatomic, retain) NSOperationQueue *retrieverQueue;

2 个答案:

答案 0 :(得分:0)

请改用self.terms。除了存取方法之外,你不应该使用底层的ivar。

答案 1 :(得分:0)

您是否尝试过查看NSNotificationCenter?这对这些情况非常有帮助,可以轻松解决这类问题。此外,通过这种方式,您可以通过一次调用轻松更新多个对象/视图。