سؤال

لدي مشكلة في فرز محتويات 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.

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