I want to display a UITableView with only the songs that are currently on the device.
If I query all items I (obviously) get all items, including the once that I purchased but not have downloaded. Here is the (part) of the code
@property (strong, nonatomic) NSMutableArray *songsList;
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.delegate = self;
self.tableView.dataSource = self;
MPMediaQuery *everything = [[MPMediaQuery alloc] init];
NSArray *itemsFromGenericQuery = [everything items];
self.songsList = [NSMutableArray arrayWithArray:itemsFromGenericQuery];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.songsList.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"TableCellID";
TableCellTitle *tablecell = (TableCellTitle *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
MPMediaItem *song = [self.songsList objectAtIndex:indexPath.row];
NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
tablecell.cellSongname.text = songTitle;
return tablecell;
}
I have read a couple of things about involving
[song valueForProperty:MPMediaItemPropertyIsCloudItem]
but can't get it to work as I explained above. Any suggestions?
MPMediaItemPropertyIsCloudItem
. This property will only grab the songs that you've manually downloaded from the cloud, whereas the Music app is able to detect which songs have been downloaded to the cache regardless of whether it has been downloaded manually or the user has just listened to it once. I'd like to find a solution to this too. – Shericesheridan