فرز محتويات nstableColumn
-
25-09-2019 - |
سؤال
لدي مشكلة في فرز محتويات nstableColumn. في NstableView الخاص بي ، هناك ثلاثة أعمدة: الملف ، الحجم ، المسار. يتم تخزين المحتويات في nsmutablearray. كل كائن في هذه الصفيف هو nsdictionary يحتوي على ثلاثة مفاتيح: الملف والحجم والمسار - قيمة لكل منها NSString.
في Builder Interface ، في سمات كل عمود جدول ، يمكنني اختيار خيارات الفرز: المحدد: أدخل IB "مقارنة:" الذي أعتقد أنه على ما يرام ، لأنني أقارن NSStrings. فرز المفتاح - وهذه هي المشكلة التي أعتقدها - لا أعرف ماذا أدخل هنا.
أي أدلة؟ إذا كان لديك أسئلة حول الكود الخاص بي ، فيرجى طرحها.
المحلول
لذلك وجدت الحل الكامل.
أولاً ، انتقل إلى Builder Interface. حدد العمود الذي تريد فرزه. انتقل إلى مفتش العمود واختر الزر الأول لرؤية "سمات عمود الجدول". حدد القيم المناسبة (حرفيًا ، لا "أو" أو @ @):
Sort key: file
حيث "الملف" هو مفتاح القاموس الذي يظهر فيه المحتويات في العمود الخاص بك.
Selector: compare:
وظيفة الفرز القياسية.
الآن ، احفظ جميع التغييرات هنا وقفز إلى Xcode ، إلى الفئة التي يكون فيها النموذج ، مصدر البيانات الموضحة في NstableView. يجب أن تعرف بالفعل أنك بحاجة إلى طريقتين هناك:
-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn
*)tableColumn row:(NSInteger)row
هذان ضروريان لتوافق البروتوكول غير الرسمي لـ NSTABDATASOURCE. يمكنك أن تقرأ عنها في مركز ماكديف.
الآن كل ما عليك فعله هو إضافة طريقة جديدة:
-(void)tableView:(NSTableView *)tableView sortDescriptorsDidChange: (NSArray *)oldDescriptors
يمكن أن يحتوي على رمز بسيط للغاية سيفعل الشيء:
-(void)tableView:(NSTableView *)tableView sortDescriptorsDidChange: (NSArray *)oldDescriptors
{
NSArray *newDescriptors = [tableView sortDescriptors];
[results sortUsingDescriptors:newDescriptors];
//"results" is my NSMutableArray which is set to be the data source for the NSTableView object.
[tableView reloadData];
}
و هذا كل شيء. إنه يعمل في تطبيقي ، آمل أن يعمل في حالتك: D يجب أن يعمل كل شيء تلقائيًا. لقد قمت للتو بحفظ جميع الملفات وصنعت التطبيق. وعملت. قون
الموقع الذي ساعدني:Cocoadev: SortingNstableView
نصائح أخرى
المفتاح هو key
التي تستخدمها في القاموس لاسترداد القيمة.
في حالتك ، لديك ثلاثة مفاتيح: الملف والحجم والمسار. حدد الشخص الذي تريد فرزه. يتم استخدام المفتاح لاسترداد القيمة من كل سجل لاستخدامه للفرز.
إذا كانت المفاتيح الخاصة بك هي @"ملف" ، @"size" ، @"path" وتريد الفرز file
ثم حاول وضع value.file
داخل ال Sort Key
الحقل في IB.
استخدم المفاتيح التي تستخدمها عند الإدخال values
الدخول الى حسابك NSDictionary
.