2012-11-12 89 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

是的,我做到了!謝謝!我剛剛意識到這一點,並回來張貼,但你擊敗了我。感謝您的及時迴應,好東西! –