Tôi đang tạo một ứng dụng mà trong đó người dùng có thể chọn một bài hát trong tab cài đặt và được phát ở chế độ xem khác theo yêu cầu. Tôi muốn nó để mục này có thể được lưu trữ nếu người dùng tắt ứng dụng và mở lại lần nữa.Cách để duy trì các đối tượng MPMediaItemCollection? (được chọn từ iPod)
tôi đã quản lý để cho phép người dùng lựa chọn và lưu trữ một bài hát bằng:
-(IBAction)showMediaPicker:(id)sender{
MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny];
mediaPicker.delegate = self;
mediaPicker.allowsPickingMultipleItems = NO;
mediaPicker.prompt = @"Select Alarm Sound";
[self presentModalViewController:mediaPicker animated:YES];
}
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {
[self dismissModalViewControllerAnimated: YES];
settingsData.selectedSong = mediaItemCollection;//Object of type MPMediaItemCollection
nhưng tôi muốn người dùng phải làm điều này mỗi khi họ sử dụng ứng dụng.
Tôi đã cố gắng sử dụng NSUserDefaults:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:settingsData.selectedSong forKey:@"alarmSoundKey"];
[defaults synchronize];
nhưng nhận được lỗi:
* - [NSUserDefaults setObject: forKey:]: Cố gắng để chèn giá trị phi tài sản '' của lớp ' MPMediaItemCollection '. Lưu ý rằng từ điển và mảng trong danh sách thuộc tính cũng phải chỉ chứa giá trị thuộc tính.
Tùy chọn của tôi là gì? Không thực sự chắc chắn làm thế nào để giải quyết vấn đề này ...
SOLUTION -
tôi không thể trả lời câu hỏi của riêng tôi nhưng vì vậy tôi sẽ đưa nó lên đây:
TÔI ĐÃ TÌM THẤY SOLUTION của riêng tôi để nÀY:
convert Đầu tiên/mã hóa MPMediaItemCollection đến một đối tượng và slam cửa hàng NSData nó bằng cách sử NSUserDefaults sử dụng:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:mediaItemCollection];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:data forKey:@"someKey"];
[defaults synchronize];
Từ đó, bạn có thể giải mã một nd sử dụng ở bất kỳ nơi nào khác trong ứng dụng của bạn ....
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"someKey"];
MPMediaItemCollection *mediaItemCollection = [NSKeyedUnarchiver unarchiveObjectWithData:data]
Hy vọng đó là một số trợ giúp cho ai đó. Lây lan từ, điều này đã không được bảo hiểm đủ. Có nghĩa đen đã làm việc về vấn đề này trong khoảng 4 giờ ...
Ah cảm ơn, đã hiểu. –