سؤال

أنا أعرف اسم سلسلة خاصية لكائن. كيف يمكنني الحصول على هذه الخاصية وإعداد هذه الخاصية باستخدام السلسلة؟

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

المحلول

في حين أن weichsel صحيح ، هناك طريقة أفضل.

يستخدم:

[anObject valueForKey: @"propertyName"];

و

[anObject setValue:value forKey:@"propertyName"];

بشكل ملحوظ، @"propertyName" يمكن أن يكون NSString وهذا يتكون ديناميكيا في وقت التشغيل.

هذه التقنية تسمى ترميز القيمة الرئيسية وهو أمر أساسي للكاكاو.

لماذا هذا أفضل بسبب -valueForKey سأفعل ما هو ضروري "مربع" أي نوع يعيد الخاصية إلى كائن. وبالتالي ، إذا كانت العقار من النوع int, ، سوف يعود NSNumber مثيل يحتوي على int.

هذا أسهل بكثير للتعامل مع - performSelector إرادة فقط العمل من أجل الأنواع التي يحدث لتناسب ذاكرة المؤشر.

لاحظ أن هناك أيضًا -setValue:forKey:.

نصائح أخرى

@synthesize propertyName أتمتة توليد أساليب getter و setter.

المترجم يولد

  • - (id)propertyName;
  • - (void)setPropertyName;

إذا كان لديك محدد مثل NSString ، فيمكنك استخدامه performSelector:NSSelectorFromString.
على سبيل المثال:
[object performSelector:NSSelectorFromString(@"propertyName") ...]

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