2

并提前感谢您的时间。

我正在尝试为 iphone 应用程序(特别是天才和 On-the-go)过滤掉某些类型的播放列表。文档说属性属性 MPMediaPlaylistPropertyPlaylistAttributes 将以包含 NSInteger 对象的 NSNumber 形式返回与播放列表关联的属性。该文档还列出了该属性的这些可能值:

e

num {
   MPMediaPlaylistAttributeNone    = 0,
   MPMediaPlaylistAttributeOnTheGo = (1 << 0),
   MPMediaPlaylistAttributeSmart   = (1 << 1),
   MPMediaPlaylistAttributeGenius  = (1 << 2)
};
typedef NSInteger MPMediaPlaylistAttribute;

我想将值记录到终端,所以我使用了

NSLog(@"播放列表属性值:%@", [[播放列表 valueForProperty:MPMediaPlaylistPropertyPlaylistAttributes] stringValue]);

但是,它每次都打印出一个值 0。这意味着每个播放列表都具有“MPMediaPlaylistAttributeNone”属性,但这没有意义,因为它正在经历许多天才和移动播放列表。

这是我的整个代码:

MPMediaQuery *myPlaylistsQuery = [MPMediaQuery playlistsQuery];
    NSLog(@"number of playlists total:%d", [[myPlaylistsQuery collections] count]);
    NSArray *playlists = [myPlaylistsQuery collections];

    for (MPMediaPlaylist *playlist in playlists) {

        NSInteger theAttributes;

        theAttributes = [[playlist valueForProperty:MPMediaPlaylistPropertyPlaylistAttributes] integerValue];
        NSLog(@"attribute:%d of playlist:%@", theAttributes, [playlist valueForProperty:MPMediaPlaylistPropertyName]);
    }

这是结果,当我在我的 iphone 上运行应用程序时。许多这些播放列表实际上是天才播放列表:

播放列表的属性:0:已购买

播放列表的属性:0:在我的 iPhone 上购买

播放列表的属性:0:他们的军队

播放列表的属性:0:蓝色

播放列表的属性:0:Closer

播放列表的属性:0:疯狂

播放列表的属性:0:为你疯狂

播放列表的属性:0:午夜

播放列表的属性:0:Something Elephants

播放列表的属性:0:超大质量黑洞

播放列表的属性:0:带我走

播放列表的属性:0:混合磁带

播放列表的属性:0:时间

播放列表的属性:0:All Around Me

播放列表的属性:0:安娜的 cd

播放列表的属性:0:Av

属性:0 的播放列表:av 2

播放列表的属性:0:相信

播放列表的属性:0:BH

播放列表的属性:0:梦碎大道

播放列表的属性:0:汽车 1

播放列表的属性:0:汽车 2

播放列表的属性:0:汽车 3

任何想法为什么每个播放列表的属性都为 0?

再次感谢您的宝贵时间!

4

4 回答 4

0

尝试这个。它工作正常。@i 将打印一个整数

NSInteger theAttributes; theAttributes = [[playlist valueForProperty:MPMediaPlaylistPropertyPlaylistAttributes] integerValue]; NSLog(@"attribute:%i of playlist:%@", theAttributes, [playlist valueForProperty:MPMediaPlaylistPropertyName]);
于 2011-01-10T02:01:24.450 回答
0

Unlike an NSNumber, a NSInteger isn't an object, so you want to use %d instead of %@ to print it out...

于 2009-07-09T03:00:57.807 回答
0
for (MPMediaPlaylist *playlist in playlists) {

    NSInteger theAttributes =[playlist items].count;

    NSLog(@"attribute:%d of playlist:%@", theAttributes, [playlist alueForProperty:MPMediaPlaylistPropertyName]);
};
于 2009-12-17T05:30:11.640 回答
0

NSInteger 只是一个原始类型定义:

typedef long NSInteger;

我认为它主要用于避免 32 位/64 位处理器之间的问题。将其视为常规 int,并在将其传递给字符串格式化程序时使用 %d。或者只是避免整个问题并使用[val intValue];它返回一个正常的 int。

于 2009-07-09T04:42:00.457 回答