2012-11-12 93 views
0

我移动了一些代码,将多次使用到类中。 我没有收到错误,但我也没有收到结果。它似乎完全跳过了我的课。 理想情况下,这个类应该做NSURL conns和XMLParser的东西来咀嚼我们的托管API的数据馈送。我已经有这个工作,但想凝结,并有点正常化/集中我的代码的一些主要逻辑。iOS:自定义类导入

函数'bdCheckIfFileExistsAndisValid'应该接受一个字符串,但返回BOOL,它根本不被调用。

既不是'bdParsePlaylistXML',它应该接受一个字符串并返回一个数组。

我在课堂上到处都是断点,没有一个被击中。 我是新来的,所以我不确定我是否做得对。这里有一些代码,预先感谢。

--------------------自定义类:(H)

@interface bdXMLParser : NSObject { 

    NSMutableArray *playlist; 

    //Playlist XML info 
    BOOL recordTrackName; 
    BOOL recordTrackDescription; 
    BOOL recordTrackThumbnailAbsoluteLocation; 
    BOOL recordTrackURL; 
    NSString *TrackName; 
    NSString *TrackDescription; 
    NSString *TrackThumbnailAbsoluteLocation; 
    NSString *TrackURL; 

} 

-(NSMutableArray*) bdParsePlaylistXML:(NSString *) playlistXMLFileName; 

-(BOOL) bdCheckIfFileExistsAndisValid:(NSString *) localFileName; 

------------ ----定制类(.M):

#import "bdXMLParser.h" 

@implementation bdXMLParser 
{ 
    NSMutableData *webData; 

    NSMutableArray *playlist; 
    NSXMLParser *xmlParserPlaylist;  
} 

-(NSString*) bdDocumentsDirectory{ 
    NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    return documentsPath; 
} 

-(int) bdCheckFileCreationDate:(NSString *) fileName { 

    //get XML file path 
    NSString *localFilePath = [[self bdDocumentsDirectory] stringByAppendingPathComponent:fileName]; 

    //local file check 
    NSFileManager *filemgr; 
    filemgr = [NSFileManager defaultManager]; 
    NSDictionary* attrs = [filemgr attributesOfItemAtPath:localFilePath error:nil]; 
    NSDate *fileCreationDate = [attrs objectForKey: NSFileCreationDate]; 
    NSDate *rightNow = [NSDate date]; 
    NSTimeInterval lastDiff = [fileCreationDate timeIntervalSinceNow]; 
    int lastDiffINT = round(lastDiff); 

    NSLog(@"NSFileCreationDate:%@",fileCreationDate); 
    NSLog(@"CurrentDate:%@",rightNow); 
    NSLog(@"lastDiff:%f",lastDiff); 

    return lastDiffINT;  
} 

-(BOOL) bdCheckIfFileExistsAndisValid:(NSString *) fileName {  
    //local file check  
    NSString* foofile = [[self bdDocumentsDirectory] stringByAppendingPathComponent:fileName]; 
    BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile]; 

    if ((fileExists == YES) && ([self bdCheckFileCreationDate:foofile] > -86400))//(24 hrs = 86400 seconds) 
     return YES; 
    else 
     return NO; 

} 

这里的图,其中我试图使用它:(menu.h)

#import "bdXMLParser.h" 
@interface MenuScreenViewController : UIViewController <NSXMLParserDelegate> 
- (IBAction)btnPlayerPlayPause:(id)sender; 

(menu.m) 

- (IBAction)btnPlayerPlayPause:(id)sender { 
    //if array exists, don't reload xml, dont reparse xml, just go to the view 
    if (playlist.count == 0){ 

     //Playlist!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     //======================================================================== 
     //1st: check to see if we have a local cached xml data 
     //if we do, check if it is <24hr old and if so load it 
     //if not, go get it with connection and overwrite/store it 

     //init blogs NSMutableArray 
     playlist = [[NSMutableArray alloc] init]; 

     //local file check 
     bdXMLParser *myParser; 
     BOOL fileExistsAndValid = NO; 
=HERE!==fileExistsAndValid = [myParser bdCheckIfFileExistsAndisValid:PlaylistName];   

     //1st 
     if (fileExistsAndValid)//(<24 hrs old) 
     { 
      NSLog (@"File fileExistsAndValid"); 

=AND HERE!!=playlist = [myParser bdParsePlaylistXML:PlaylistName]; 
      NSLog(@"playlist:%u", playlist.count); 
      //load first track 
      [self LoadTrack:0]; 
     } 
     else{ 

      NSLog (@"File doesn't exist"); 
      //call refresh function 
      //[self refreshAlbumPhotoXML]; 
      [myParser bdRefreshPlaylistXML]; 
     } 
    } 
} 

回答

1

您忘记INITING类

bdXMLParser *myParser= [[bdXMLParster alloc]init]; 
+1

是的,我做到了!谢谢!我刚刚尝试过,现在又回来报道了!但是,感谢这种永不过时的正确回应。 –

+0

是的,我做到了!谢谢!我刚刚意识到这一点,并回来张贴,但你击败了我。感谢您的及时回应,好东西! –