إذا كان NSDictionary مناسبًا للقيم المزدوجة، فما هو الجيد للقيم الثلاثية؟

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

سؤال

يعد NSDictionary مفيدًا لأزواج القيمة الرئيسية، ما هي بنية البيانات الأفضل عندما يكون لديك ثلاث قيم؟هل من الأفضل إنشاء فئة لهذه القيم الثلاث، ثم السماح لكل كائن في المصفوفة أن يحتوي على مثيلات لتلك الفئة؟

لكي تكون محددًا:بنية البيانات، دعنا نسميها "الشخص"، أتصور أنها تحتوي على ثلاث قيم:(NSString) الاسم، (int) العمر، (BOOL) حي

سيتم عقدها في صفيف (؟).من المهم أن تكون قادرًا على استخدام الاسم كمفتاح، وكذلك الإشارة إلى الكتلة بأكملها برقم، بدءًا من الصفر.

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

المحلول

إذا كان لديك مفتاح واحد واثنين من القيم، وكنت ربما إنشاء فئة لالقيمتين والتي لا تزال تستخدم القاموس.

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

وETA:

والآن بعد أن كنت قد أوضحت سؤالك - إذا كنت بحاجة إلى الوصول إلى مجموعتك سواء عن طريق مفتاح أو مؤشر عدد صحيح، لا يزال بإمكانك استخدام القاموس

لتحصل على البند المفتاح، عليك أن تفعل هذا:

[myDict objectForKey:@"joe"];

لتحصل على البند المؤشر، يمكن استخدام مجموعة allKeys:

[myDict objectForKey:[[myDict allKeys] objectAtIndex:1]];

وإذا كان الغرض الوحيد للحصول على الناس من خلال مؤشر وحلقات عبر المجموعة الكاملة، وكنت أفضل حالا النظر في استخدام أسلوب keyEnumerator تعداد المفاتيح في حلقة واستخدام هذه المفاتيح للبحث عن القيم.

نصائح أخرى

ويمكنك استخدام البيانات الأساسية لتمثيل العلاقات بيانات أكثر تعقيدا، وذلك باستخدام نموذج قواعد البيانات العلائقية.

تحقق من الموقع المطور التفاح للحصول على أمثلة والوثائق.

قد يبدو الأمر غير ذي صلة في البداية، ولكن تحقق من البنية الموجهة نحو القاموس في هذا مقدمة لربطات الكاكاو.(يعد CocoaDevCentral وScott Stephenson من الموارد الرائعة لمطوري Cocoa الجدد.) والمنهج الذي يستخدمه مرن للغاية وسهل التغيير في المستقبل.لا يعد استخدام القاموس بدلاً من ivars هو الحل الأفضل دائمًا، ولكنه قد يكون مناسبًا لاحتياجاتك.

ملحوظة: مثل البيانات الأساسية، يعد Cocoa Bindings أيضًا موضوعًا معقدًا للغاية.أقترح استخدام الجانب التنظيمي فقط من البرنامج التعليمي، وعدم الاستغراق في الارتباطات بشكل كامل.:-)

وتحتاج للنظر في CoreData (إذا كنت تخزينه) وتحديد فئة الكائن. وليس المقصود من الأشياء العامة مثل الأم NSDictionary لتخزين القيم المعقدة التي تشكل كائنات معقدة مثل شخص.

Person *person = [[Person alloc] init];
person.firstName = @"blah";
person.age = 24;
person.isAlive = YES;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top