سؤال

لدي مجموعة بيانات كبيرة (حوالي 3500 كائن) تعود من خادم بعيد عبر HTTP. يتم تقديم البيانات حاليًا في NSCOLLECTIONVIEW. أحد جوانب البيانات هو حزمة مسار للخادم لصورة صغيرة تمثل البيانات (فكر في صورة مصغرة للبساطة).

يعمل Bindings بشكل خيالي للبيانات التي تم إرجاعها بالفعل ، وربط الصورة عبر ربط القيمة السهل. ومع ذلك ، فإن واجهة المستخدم بطيئة للغاية عند التمرير عبر مجموعة البيانات - مما يجعلني أعتقد أن NSCollectionView يتم استرجاع جميع بيانات الصورة بدلاً من بيانات الصورة المستخدمة لعرض الصور القابلة للعرض حاليًا.

كنت تحت الانطباع بأن عناصر التحكم في الكاكاو كانت ذكية بما يكفي لاسترداد البيانات فقط للحصول على المعلومات التي يتم إخراجها بالفعل إلى واجهة المستخدم من خلال التحميل كسول. يبدو أن هذا هو الحال بالتأكيد مع NSTableView - لكن يمكن أن أكون مضللاً في هذا الفكر.

يجب أن يكون قانون الربط المقيمة بتكاسل ، وعلاوة على ذلك ، إذا كان يتصرف بتكاسل في NSCollectionView?

يمكنني إنشاء آلية للتخزين المؤقت (في الواقع لدي بالفعل شيء من هذا القبيل لتطبيق آخر - راجع مشاركتي هنا إذا كنت مهتمًا ملء nsimage مع بيانات من nsurlconnection غير متزامن) لكنني لا أريد حقًا السير في هذا المسار إذا لم يكن عليّ لهذا التطبيق المحدد لأن المستخدم يمكن أن يغير مجموعات البيانات في كثير من الأحيان وقد يريد فقط مجموعات فرعية صغيرة من البيانات.

أي نهج مقترحة؟

شكرًا!

تحديث

بعد المزيد من الاختبارات ، يبدو أن المشكلة تنشأ لأن إجراء التمرير من خلال مجموعة البيانات يتسبب في طلب كل صورة من الخادم. بمجرد تمرير جميع الصور في مجموعة البيانات ، تكون الاستجابة سريعة جدًا.

لذلك سؤال ... هل هناك أي طريقة لإيقاف تشغيل القيمة أثناء التمرير وإعادة تشغيله عند الانتهاء من التمرير؟

هل كانت مفيدة؟

المحلول

الحل الخاص بي هو استخدام آلية التخزين المؤقت المخصصة مثل تلك التي أستخدمها بالفعل لتطبيق آخر. تتجلى المشكلة في نفسها لأنك أثناء التمرير للصور السابقة التي لم يتم تنزيلها بعد ، فإن عنصر التحكم يؤدي إلى الذهاب إلى الملفات غير المستقرة حتى الآن.

بمجرد تنزيل الصور ، تتوفر الصور محليًا ، وبالتالي يتم التمرير لتطبيع السرعة. يتمثل الحل في التحقق لمعرفة ما إذا كانت الصورة متوفرة محليًا وتقديم رسم بديل للتطبيق أثناء تنزيل الصورة في الخلفية. بمجرد تنزيل الصورة ، قم بتحديث النموذج باستخدام الصورة التي تحل محل صورة الكعب التي جاءت من الحزمة.

هذا يترك واجهة المستخدم في حالة استجابة للغاية طوال الوقت ، ويترك المستخدم لديه القدرة على التفاعل ويسمح بإدارة خلفية مخصصة للصور.

بالطبع كان من الجيد لو كان كل هذا بالنسبة لي معرف كل هذا ، ولكن ماذا سيترك لي أن أفعل؟ :-)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top