0

複数回使用されるコードをクラスに移動しました。エラーは発生していませんが、結果も得られていません。私のクラスを完全にスキップしているようです。理想的には、このクラスは NSURL conns と XMLParser を実行して、ホスティング API からのデータ フィードを処理することになっています。私はすでにこれを機能させていますが、コードの主要なロジックの一部を固めて、ある程度正規化/集中化したいと考えていました。

1 つの関数「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];
        }
    }   
}
4

1 に答える 1

1

あなたはクラスを開始するのを忘れました

bdXMLParser *myParser= [[bdXMLParster alloc]init];
于 2012-11-12T23:26:58.730 に答える