سؤال

لدي ملف plist الذي يحتوي على مجموعة من القواميس. هنا هو واحد:

قاموس فريد
اسم فريد
Ismale [تم فحص المربع

الآن أقوم بتهيئة كائن شخصي مع القاموس الذي قرأته من ملف PLIST:

 -(id) initWithDictionary: (NSDictionary *) dictionary {
    if (self = [super init])
    self.name = [dictionary valueForKey: @"Name"];
    self.isMale = ????
  }

كيف يمكنني الانتهاء من الكود أعلاه بحيث يتم ضبط self.ismale على نعم إذا تم التحقق من المربع في ملف PLIST ، ولا إذا لم يكن كذلك. ويفضل أن يتم تعيينه أيضًا إلى لا إذا لم يكن هناك مفتاح Ismale في القاموس.

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

المحلول

عادةً ما يتم تخزين قيم Bool في حاويات OBJ-C ملفوفة في كائن nsnumber. إذا كان الأمر كذلك في حالتك ، فيمكنك استرداد قيمة Bool باستخدام:

self.isMale = [[dictionary objectForKey:@"isMale"] boolValue];

نصائح أخرى

فلاديمير على حق ، سأقوم فقط بالتناغم وأقول إنه من الجيد أن تتحقق من وجود تلك القيم من plist أيضًا ، وإذا لم يتم تعيينها على قيمة افتراضية عادة.

شيء مثل:

id isMale = [dictionary valueForKey:@"isMale"];
self.isMale = isMale ? [isMale boolValue] : NO;

الذي يتحقق لمعرفة ما إذا كانت قيمة المفتاح "Ismale" موجودة في القاموس. إذا حدث ذلك ، فإنه يحصل على القيمة المنطقية منه. إذا لم يفعل ذلك ، فإنه يعين ذاتيًا إلى الافتراضي من لا.

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