用于循环遍历数组中的属性

时间:2014-06-24 21:21:23

标签: ios objective-c arrays uitableview

我正在尝试遍历名为songs的数组,其中包含来自iPod库的用户歌曲列表,但要获得标题,我需要这样做(获得NSString歌曲标题):

[[songs objectAtIndex:i] valueForProperty:MPMediaItemPropertyTitle]

我正在尝试创建tableView的索引,但我仍然坚持这一点:

for (NSString *title = MPMediaItemPropertyTitle in songs)
{
    rowTitle= [title substringToIndex:1];  //modifying the statement to its first alphabet
    if ([rowTitle isEqualToString:sectionTitle])  //checking if modified statement is same as section title
    {
        [rowContainer addObject:title];  //adding the row contents of a particular section in array
    }
}

我收到错误的地方

  

- [MPConcreteMediaItem substringToIndex:]:无法识别的选择器发送到实例

在这一行:rowTitle= [title substringToIndex:1];

如何循环播放歌曲以获取MPMediaItemPropertyTitle然后获取歌曲标题的第一个字母?我认为我正在做的是声明NSString'title并循环播放歌曲中的所有标题。显然我不是:S。

我正在关注此tutorial。请问有人帮帮我吗?感谢。

3 个答案:

答案 0 :(得分:1)

此...

for (NSString *title = MPMediaItemPropertyTitle in songs)

应该......

for (MPMediaItem *song in songs) {
    NSString *title = [song valueForProperty:MPMediaItemPropertyTitle];
}

您的原始代码将title引用指向MPConcreteMediaItem项。

答案 1 :(得分:1)

试试这个。

for (NSString *title in songs)
   {
     rowTitle= [title substringToIndex:1];  //modifying the statement to its first alphabet

       if ([rowTitle isEqualToString:sectionTitle])  //checking if modified statement is same as section title
             {
                [rowContainer addObject:title];  //adding the row contents of a particular section in array
              }
            }

答案 2 :(得分:1)

for..in循环遍历songs数组中的对象。它不会自动发送valueForProperty消息,因此您必须自己执行此操作:

for (MPMediaItem *song in songs)
{
    NSString *title = [song valueForProperty:MPMediaItemPropertyTitle];
    rowTitle= [title substringToIndex:1];  //modifying the statement to its first alphabet
    if ([rowTitle isEqualToString:sectionTitle])  //checking if modified statement is same as section title
    {
        [rowContainer addObject:title];  //adding the row contents of a particular section in array
    }
}