كيف يمكنني استخدام nsarray و nsarrayController مع البيانات الأساسية؟

StackOverflow https://stackoverflow.com/questions/1023378

  •  06-07-2019
  •  | 
  •  

سؤال

لدي بعض التعليمات البرمجية التي تحتاج إلى الوصول إلى NSArray للعمل.لدي NSArray أستخدمه مع Core Data وسأحتوي على بيانات فيه، لكنني غير متأكد من كيفية جعل NSArrayController الخاص بي يصل إلى NSArray.

لا يمكنني ببساطة الإعلان عنه في ملف الرأس مثل هذا: NSArray *objectArray; لأنه لا يعرف كيف أو ماذا NSArray للوصول.كيف يمكنني الوصول بالضبط إلى NSArray الذي أستخدمه مع Core Data؟

الملف الرئيسي الخاص بي:

#import <Cocoa/Cocoa.h>


@interface MyOutlineView : NSOutlineView {
    NSArrayController* objectArray;
}

@end

ملف التنفيذ الخاص بي:

#import "MyOutlineView.h"

@implementation MyOutlineView

- (void) outlineView: (NSOutlineView *) aView
     willDisplayCell: (id) aCell
      forTableColumn: (NSTableColumn *)aColumn
                item: (id) anItem
{
    id rootObj = anItem;
    unsigned row = [aView rowForItem:anItem];

    [aCell setDrawsBackground: YES];

    while ([aView levelForRow:row] != 0) {
        row --;
        rootObj = [aView itemAtRow:row];
    }

    // The colours here are foul and ugly.  Use something else, for
    // God's sake!
    if( [objectArray indexOfObject:rootObj] % 2 )
        [aCell setBackgroundColor: [NSColor yellowColor]];
    else
        [aCell setBackgroundColor: [NSColor blueColor]];
}

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

المحلول

لقد قمت بإنشاء تطبيق اختباري باستخدام IBOutlet المتصل بـ NSArrayController من Xib.في هذا الاختبار لدي:

  • بدأت من قالب تطبيق البيانات الأساسية؛
  • تم إنشاء كيان في نموذج البيانات بخاصيتين (سلسلة، int)؛

في شيب:

  • وحدة تحكم الصفيف مع سياق الكائن المُدار، المتصل بـ Test_AppDelegate.managedObjectContext؛
  • TableView مع أعمدة متصلة بالسمة الأولى والثانية لوحدة تحكم الصفيف للكائنات المرتبة؛
  • أزرار الإضافة والإزالة، المتصلة بإضافة وحدة تحكم المصفوفة:وإزالة:أجراءات؛
  • زر "إظهار العدد" والتسمية؛-

في الكود (Test_AppDelegate.*):

  • IBOutlet NSArrayController *ac;(متصل في Xib من Test_AppDelegate.ac إلى Array Controller)؛
  • IBOutlet NSTextField *nLabel;(متصل في Xib إلى Label)؛
  • (IBAction)showNum:(id)sender;(متصل من زر "إظهار العدد")؛
  • الكود قيد التنفيذ showNum:[nLabel setIntValue:[[ac ترتيب الكائنات] العد]]؛

انا قادر على:

  • إضافة/إزالة الكائنات إلى عرض الجدول والمصفوفة الخاضعة للتحكم؛
  • قم بالوصول إلى NSArrayController من التعليمات البرمجية للحصول على مصفوفة كائنات مرتبة.

لذلك يجب أن يعمل ربط IBOutlet من التعليمات البرمجية إلى وحدة تحكم Array الخاصة بـ Xib والوصول إلى الكائنات المرتبة.

نصائح أخرى

ربما لا أفهم هذا - لكن ألا يمكنك إنشاء طريقة initWithArray؟

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