我正在解析來自Feed的字符串,將它們轉換爲URL並將它們存儲爲FeedItem的屬性。最初,它們已成功轉換爲URL並存儲,但稍後,當我訪問該屬性時,它是零。將字符串轉換爲NSURL並存儲爲屬性成功,稍後返回nil
FeedItem.h
@interface FeedItem : NSObject
@property (nonatomic, strong) NSString* author;
@property (nonatomic, strong) NSURL* imageURL;
@property (nonatomic, strong) NSString* datePublished;
@end
Parser.m
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
// Custom blog object initialized here
if ([elementName isEqualToString:@"entry"]) {
self.blogEntry = [[FeedItem alloc] init];
}
// Parse image URL that accompanies some blog entries
self.blogEntry.imageURL = [NSURL URLWithString:[attributeDict objectForKey:@"url"]];
if ([[NSURL URLWithString:[attributeDict objectForKey:@"url"]] isKindOfClass:[NSURL class]]) {
NSLog(@"converted to a url");
if ([self.blogEntry.imageURL isKindOfClass:[NSURL class]]) {
NSLog(@"property of object is url");
}else if (!self.blogEntry.imageURL) {
NSLog(@"url becomes nil");
}else{
NSLog(@"property of object is NOT url");
}
}
}
這版畫 「轉換爲一個URL」 和 「對象的屬性是URL」 每次它應該時間。但是,後來在同一個文件中:
- (void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"entry"]) {
// An individual blog has been parsed and a pointer to it is added to the parsedResults array
if ([self.blogEntry.imageURL isKindOfClass:[NSURL class]]) {
NSLog(@"URL passed");
}else if (!self.blogEntry.imageURL) {
NSLog(@"is nil");
}else{
NSLog(@"no luck");
}
[self.parsedResults addObject:self.blogEntry];
}
}
這會打印出「無」每次。
這裏被解析URL的一個示例: URL =「http://2.bp.blogspot.com/-HlNeYKf6Jyk/URKJ0NzA_kI/AAAAAAAAADY/AAkM6mNITlo/s72-c/Ananya's+Illustration.jpg」
我知道有可能是問題,如果一個URL具有特殊性格,但因爲它是成功的開始,我想通這不應該是問題。
我是新來的objective-c ...我在想什麼?
如果不是如果(!self.blogEntry.imageURL)將其改爲else if(!self.blogEntry),它是否仍然記錄「爲零」? – rdelmar 2013-02-12 17:27:46
@rdelmar不,它會記錄第三個選項「不幸」。剩下的屬性被正確存儲,我可以稍後訪問它們以顯示在UITableView中而沒有問題。 – mbrauh 2013-02-12 17:29:56
你有這樣的地方:NSLog(@「object of object is url」);也可以嘗試記錄self.blogEntry.imageURL並查看它是否看起來像一個正確的URL。 – rdelmar 2013-02-12 17:45:13