0

そこで、AppleScript オブジェクトを作成し、AppleScript から返された値をユーザーに送信される情報として使用することで、再生中の現在の曲を取得するコードを作成しました。悲しいことに、それは私が取り除く必要がある他のたくさんのがらくたを投げ込みます.

これが私のコードです:

-(NSString *)getCurrentTrack {
    NSString *currentTrack = @"";
    NSAppleScript *getTrack = [[NSAppleScript alloc] initWithSource:@"tell application \"iTunes\" to get the name of the current track"];


    currentTrack = [getTrack executeAndReturnError:nil];

    return currentTrack;

    //tell application "iTunes" to get the name of the current track
}

currentTrack の戻り値は次のとおりです。

<NSAppleEventDescriptor: 'utxt'("track name here")>

だから私は取り除く必要があります<NSAppleEventDescriptor: 'utxt'(" and the ")> at the end

4

2 に答える 2

1

[getTrack executeAndReturnError:nil]NSAppleEventDescriptorを返します

NSAppleEventDescriptorからNSStringを取得するには:

NSAppleEventDescriptor *resultDescriptor = [getTrack executeAndReturnError:nil];
return [resultDescriptor stringValue];
于 2012-04-29T20:16:44.983 に答える
0

私はこれがうまくいくことを願っています:

-(NSString *)getCurrentTrack {
    NSString *currentTrack = @"";
    NSAppleScript *getTrack = [[NSAppleScript alloc] initWithSource:@"tell application \"iTunes\" to get the name of the current track"];


    currentTrack = [getTrack executeAndReturnError:nil];

    currentTrack = [currentTrack stringByReplacingOccurrencesOfString:@"\"" withString:@"'"];
    NSArray *left = [currentTrack componentsSeparatedByString:@"('"];
    NSString *text2 = [left objectAtIndex:1];
    NSArray *right = [text2 componentsSeparatedByString:@"')"];

    return [right objectAtIndex:0];


    //tell application "iTunes" to get the name of the current track
}

あなたが私に与えtrack name hereた例を使用して戻るはずですが、私は次のような偽の応答を作成したので、手動でエスケープしました:<NSAppleEventDescriptor: 'utxt'("track name here")>"currentTrack = @"<NSAppleEventDescriptor: 'utxt'(\"track name here\")>";

それがうまくいったかどうか教えてください、-Joseph Rautenbach(あなたは私を知っています笑)

于 2012-04-29T16:43:58.247 に答える