確定這應該是容易的,但仍然我在這裏打破了我的頭:的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