لا يعمل نقل قائمة التشغيل إلى المجلد
سؤال
أواجه مشكلات في نقل ملف تم إنشاؤه حديثًا SPPlaylist
إلى (ربما تم إنشاؤه حديثًا) SPPlaylistFolder
.
تتمثل الفكرة في إنشاء مجلد في حساب Spotify الخاص بالمستخدم، حيث يمكنني إضافة قوائم التشغيل التي تم إنشاؤها من تطبيقي.إذا لم يتم إنشاء مثل هذا المجلد، فأنا أقوم بإنشاء مجلد جديد SPPlaylistFolder
واحفظ معرف المجلد لاستخدامه لاحقًا.
هذا ما أفعله (لقد حذفت أجزاء من الكود غير مثيرة للاهتمام لهذا الموضوع):
اذا كان
folderId
تم حفظه مسبقًا (أيتم إنشاء مجلد)، استخدم هذا المعرف لتحميل مثيل المجلد:... NSError *error = nil; if (folderId > 0) { // try to fetch folder folder = [[SPSession sharedSession] playlistFolderForFolderId:folderId inContainer:container]; } if (folder == nil) { // create folder folder = [container createFolderWithName:@"My Folder" error:&error]; // save a reference to the folder in an instance var _appFolder = [folder retain]; // (also saving folder.folderId in NSUserDefaults) } ...
يخترع
SPPlaylist
:[[[SPSession sharedSession] userPlaylists] createPlaylistWithName:@"My Playlist"]
.استخدم KVO لمراقبة الحاوية
playlists
الخاصية والحصول على إشعار عند إنشاء قائمة التشغيل:[[[SPSession sharedSession] userPlaylists] addObserver:self forKeyPath:@"playlists" options:0 context:nil]
.مراقبة
playlists
الخاصية وانقل قائمة التشغيل التي تم إنشاؤها إلى ملفيSPPlaylistFolder
(containerPlaylist
هي قائمة التشغيل التي حددتها على أنها القائمة التي سيتم نقلها):... // identify the index of the containerPlaylist NSInteger playlistIndex = [[[[SPSession sharedSession] userPlaylists] playlists] indexOfObject:containerPlaylist]; // move playlist NSError * error = nil; BOOL success = [container movePlaylistOrFolderAtIndex:playlistIndex ofParent:nil toIndex:0 ofNewParent:_appFolder error:&error]; if (success) { // This should be a great success. But the playlist hasn't been moved, although the error variable is nil. } ...
بعد هذه الخطوات، تم إنشاء كل من قائمة التشغيل والمجلد، ولكن لم يتم نقل قائمة التشغيل.ولا أتلقى أي أخطاء تشير إلى أي إدخال غير صالح إلى ملف movePlaylistOrFolderAtIndex
طريقة.
هل أفتقد شيئًا واضحًا هنا؟أم أن وظيفة النقل معيبة بطريقة أو بأخرى؟
ملحوظة:لقد حاولت أيضًا استخدام هذا الرمز لنقل قوائم التشغيل التي تم إنشاؤها مسبقًا (أيانقل جميع قوائم التشغيل المسماة "قائمة التشغيل الخاصة بي" إلى المجلد).
تحرير 1: لقد قمت بالتحقيق في هذا الأمر بشكل أكبر وحصلت بالفعل على بعض الإجراءات المؤثرة.لكن كان عليّ إعادة كتابة بعض التعليمات البرمجية وإجراء النقل عدة مرات (أو في مرحلة لاحقة).يبدو أن هذا مرتبط بالبيانات الموجودة في SPSession التي لا تتم مزامنتها/تحديثها بالكامل (؟) نظرًا لأنه من الممكن نقل قوائم التشغيل عند التسجيل لاحقًا بجلسة جديدة.
هل من الممكن أن تكون مشكلة مزامنة، أي.يعتقد libspotify أن SPPlaylistFolder
يتم إنشاؤه ويتحرك SPPlaylist
ق إليها، دون أن يتم إنشاؤها فعلا حتى الآن؟
المحلول
بعد تحديث الكود الخاص بي بالإشارة إلى هذه المشكلة على Coalibspotify, ، إنه يعمل بشكل أفضل.ما لم أدركه في البداية هو كيفية عمل المزامنة مع خدمة Spotify.قد يستغرق الأمر عدة دقائق حتى تنعكس التغييرات في عميل سطح المكتب Spotify، على سبيل المثال.