0

ArtistiOSで、、、Album曲のタイトルなどのメディア情報を取得するとMPMediaItem、一部の曲にはアーティスト名とアルバムがありません。

だから私はNULLで戻り値を取得しました

これが私のコードです

MPMediaItem *currentItem = self.player.nowPlayingItem;

    NSString *Artist = [currentItem valueForProperty:MPMediaItemPropertyArtist];
    NSString *Title = [currentItem valueForProperty:MPMediaItemPropertyTitle];
    NSString *Album = [currentItem valueForProperty:MPMediaItemPropertyAlbumTitle];

曲にアーティスト名とアルバム名がない場合は、NULLValueを返します。

NULLその値を値に置き換えたいUnknown

どうすれば交換できますか?

読んでくれてありがとう。

4

3 に答える 3

1
- (NSString*)getValueFromMediaItem:(MPMediaItem*)item forKey:(NSUInteger)key
{
    NSString * value = [item valueForProperty:key];

   if([value isKindOfClass:[NSNull class]] || !value)
      return @"Unknown";

    return value;
}

//call this by:
    NSString *Artist = [self getValueFromMediaItem:currentItem forKey: MPMediaItemPropertyArtist];
于 2013-01-12T17:33:57.370 に答える
1

エレガントになりたい場合は、次のMPMediaItemようなカテゴリを追加できます。

@implementation MPMediaItem (Readable)

- (id)readableValueForProperty:(NSString *)prop
{
    id originalValue = [self valueForProperty:prop];

    if (originalValue == nil) {
        return @"Unknown";
    }

    return originalValue;
}

@end

次に、次のように呼び出すことができます。

NSString *artist = [currentItem readableValueForProperty:MPMediaItemPropertyArtist];

NSString元々ではないプロパティを取得している場合、これは危険であることに注意してください。ただし、文字列値のみで操作している場合は、これで問題ありません。

常に安全であるが読みにくい(そしてより冗長な)アプローチは、すべての戻り値を手作業でチェックすることです。

NSString *artist = [currentItem valueForProperty:MPMediaItemPropertyArtist];
if (artist == nil) artist = @"Unknown";
于 2013-01-12T17:34:56.660 に答える
0
  if (strArtist==nil)
        {
            NSString *emptystring=@" ";
            [ArrayArtist addObject:emptystring];
        }
        else
        {
            [ArrayArtist addObject:strArtist];

        }
于 2014-04-07T06:16:29.727 に答える