Как сохранить MPMediaItemPropertyPersistentID в базовом объекте данных - PullRequest
0 голосов
/ 18 марта 2012

У меня проблемы с сохранением MPMediaItemPropertyPersistentID в моих основных данных: я получаю следующую ошибку:

Несовместимый указатель на целочисленное преобразование, отправляющий «NSNumber * __ strong» на параметр типа «unsigned long long»;

У меня есть атрибут в моей базовой модели данных "profileItemsPersistentID", определенный как Integer 64.

Заранее спасибо

-Pauls.

NSNumber *selectedSongID;


- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {

    [self dismissModalViewControllerAnimated: YES];

    selectedSong =         [[mediaItemCollection.items objectAtIndex: 0] valueForProperty:MPMediaItemPropertyTitle];
    selectedArtist =       [[mediaItemCollection.items objectAtIndex: 0] valueForProperty:MPMediaItemPropertyArtist];
    selectedSongDuration = [[mediaItemCollection.items objectAtIndex: 0] valueForProperty:MPMediaItemPropertyPlaybackDuration];

    //Incompatible pointer to integer conversion sending 'NSNumber *__strong' to parameter of type 'unsigned long long'; 
    selectedSongID =       [[mediaItemCollection.items objectAtIndex: 0] valueForProperty:MPMediaItemPropertyPersistentID];

    NSLog(@"selectedSongID: %@",selectedSongID);
}

- (IBAction)barButtonSave:(id)sender 
{

    [profileItemsClass setValue:selectedSong forKey:@"profileItemsSong"];
    [profileItemsClass setValue:selectedArtist forKey:@"profileItemsArtist"];
    [profileItemsClass setValue:[NSNumber numberWithInt:songLength] forKey:@"profileItemsSongDurationInSeconds"];
    [profileItemsClass setValue:[NSNumber numberWithUnsignedLongLong:selectedSongID] forKey:@"profileItemsPersistentID"];

    [profileItemsClass setValue:[NSNumber numberWithInt:numberOfRows + 1] forKey:@"profileItemsSongOrder"];



    NSError *error = nil;
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
    if (managedObjectContext != nil)
    {
        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
        {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }
    }

}      

1 Ответ

1 голос
/ 18 марта 2012

Пол,

Иногда сообщения об ошибках говорят точно, что не так.Ваш код:

selectedSongID = [[mediaItemCollection.items objectAtIndex: 0] valueForProperty:MPMediaItemPropertyPersistentID];

Хотя я не скомпилировал приведенный ниже код, он исправляет вашу ошибку:

selectedSongID = [[[mediaItemCollection.items objectAtIndex: 0] valueForProperty:MPMediaItemPropertyPersistentID] unsignedLongLongValue];

Andrew

...