في أي حالات لن تكون هناك كائن متوافق مع ترميز القيمة الرئيسية؟

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

سؤال

حاليا أنا أتعلم كل الأشياء حول ترميز القيمة الرئيسية.

في المستندات يقولون:

أي كائن في تسلسل المسار الرئيسي الذي ليس مطلوب ترميز القيمة الرئيسية المتوافقة مع المفتاح المناسب بقيمة valueforundefinedkey: رسالة.

أحاول أن أتخيل موقفا فيه كائن غير متوافق مع ترميز القيمة الرئيسية. كيف يمكن أن يحدث ذلك؟ عندما أقوم بتقييم Uiview، هذا متوافق بوضوح، أليس كذلك؟ ولكن عندما أقوم فقط بجعل كوجي الخاص بي مع NSOBJECT كما Superclass، كيف ذلك؟ وعندما أقوم بفئة بدون فئة فائقة، فمن المؤكد أن هذا ليس متوافقا مع KV؟

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

المحلول

إذا قرأت بعناية، سترى أنه يقول "متوافق مع ترميز القيمة الرئيسية للمفتاح المناسب". هذا يعني، أساسا، لا تملك أساليب KVC المناسبة للمفتاح الذي طلبته. لذلك إذا فعلت [[NSString stringWithString:@"foo"] valueForKey:@"dippingSauce"], ، سوف يسقط إلى valueForUndefinedKey: لأن NSstring ليس متوافقا مع KVC للمفتاح "Dippassauce" - لا يحتوي على dippingSauce طريقة مثيل أو dippingSauce إيفار.

نصائح أخرى

تقول "هذا ليس متوافقا في ترميز القيمة الرئيسية للمفتاح المناسب. "ماذا يعني ذلك

@interface MyObject : NSObject {
  NSString *foo;
  NSString *bar;
}

@property (nonatomic, retain) NSString *foo;
@property (nonatomic, retain) NSString *bar;

@end

@interface MyObject

@synthesize foo;
@synthesize bar;

@end

متوافق مع "فو" و "بار"، ولكن ليس "باز".

للحصول على خصائص بسيطة تهدف إليها، بشكل افتراضي، يتم تنفيذ جميع الفئات الفئة الفرعية NSOBJECT الأساسي KVC. يصبح مهتز مع مجموعات. من أجل العمل KVC بشكل صحيح للمجموعات (حتى تتمكن من فعل أشياء مثل:

NSArray *people = ... ;
NSArray *firstNames = [people valueForKey:@"firstName"];

يتطلب منك تطبيق أساليب إضافية معينة. بشكل عام أكبر مستخدم لتلك الوظيفة هي ربط الكاكاو (والتي غير متوفرة على iPhone) التي تم الحصول عليها من coredata (والتي تولد تلك طرق التحصيل الإضافية تلقائيا على أي حال)، لذلك لا تزال عادة ما يتم التعامل معها بشكل أساسي. عموما لا يهتم الناس بتنفيذ دعم KVC الكامل للقواميس أو المصفوفات في كائناتهم ما لم يعتزموا بفضحهم بالفعل. يمكنك اقرأ حول الامتثال في دليل KVC.

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