确定这应该是容易的,但仍然我在这里打破了我的头:的Xcode:合格的NSString从一类到另一个问题
在我的根视图控制器我有一个NSString
名为“项”,并可以正常使用。我NSLogged
它和它的作品。 我有一个名为'ParseOperation'另一个类,并在其中我有一个NSString
称为“localEntry”和IM试图发送到“ParseOperation”,从“RootViewController的”变量“条目”这是我的RootViewController的代码:
RootViewController.m
ParseOperation *parseOperation = [[ParseOperation alloc] init];
parseOperation.localEntry = entry;
它只是不起作用。如果我在我的ParseOperation.m中返回“NSLog
”,但是如果我在我的RootViewController上执行该操作,它将返回正确的变量。是的,我也进口ParseOperation.h
这里是ParseOperation代码(仅使用localEntry的部分):
ParseOperation.h
@interface ParseOperation : NSOperation <NSXMLParserDelegate>
{
NSString *localEntry;
}
@property (nonatomic, retain) NSString *localEntry;
@end
ParseOperation.m
@synthesize localEntry;
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict
{
//NSLog(@"entrada %@",localEntry);
if ([elementName isEqualToString:localEntry])
{
self.workingEntry = [[[AppRecord alloc] init] autorelease];
}
storingCharacterData = [elementsToParse containsObject:elementName];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
if (self.workingEntry)
{
if (storingCharacterData)
{
NSString *trimmedString = [workingPropertyString stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[workingPropertyString setString:@""]; // clear the string for next time
if ([elementName isEqualToString:kIDStr])
{
self.workingEntry.appURLString = trimmedString;
}
else if ([elementName isEqualToString:kNameStr])
{
self.workingEntry.appName = trimmedString;
}
else if ([elementName isEqualToString:kImageStr])
{
self.workingEntry.imageURLString = trimmedString;
}
else if ([elementName isEqualToString:kArtistStr])
{
self.workingEntry.artist = trimmedString;
}
}
else if ([elementName isEqualToString:localEntry])
{
[self.workingArray addObject:self.workingEntry];
self.workingEntry = nil;
}
}
}
谢谢!
谢谢我以不同的方式开始执行tho ...而不是我声明的所有ParseOperation: 'ParseOperation * parseOperation = [[ParseOperation alloc] init];' 并发送变量,就像'parseOperation.localEntry = entry' 但仍然是相同的结果 – Ponchotg 2011-03-30 23:58:45
@Ponchotg:parseOperation.localEntry = entry是调用setter的语法简写。它相当于[parseOperation setLocalEntry:entry]。在Objective-C 2.0中引入的点语法只是为了方便而隐藏了这个方法调用,但实际上它调用了setter。 – 2011-03-31 00:08:39
我发了一些更多的代码,希望你能帮助和谢谢! – Ponchotg 2011-03-31 01:40:21