سؤال

وأود أن جعل المدينة/البلد محدد باستخدام 2 NSPopupButtons.واحد المنبثقة زر سوف تحتوي على الجزء الأول مثلا ، المملكة المتحدة, والثاني سوف تحتوي على الجزء الثاني مثلالندن لذلك كله المدينة/البلد السرد قراءة:المملكة المتحدة لندن ومع ذلك, أريد الجزء الثاني ليتم تحديثه عند أول جزء يتم تحديد مثلاإن لندن تم تحديد الخيارات الممكنة في الثانية popupbutton سوف تكون لندن وبرمنغهام ومانشستر الخ ، بينما إذا كانت إيطاليا المختار ، ثم الثانية popupbutton سيتم عرض بلدان مثل البندقية وميلانو.... الخ

بعد ذلك أود أن تخزين هذه البيانات في سمة واحدة في البيانات الأساسية.لذلك الانضمام إلى اثنين معا متجر "المملكة المتحدة لندن" في السمة يسمى "المكان".

يمكن لأي شخص أن تعطيني بعض المساعدة في كيفية تنفيذ هذا من فضلك ؟

شكرا لك!

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

المحلول

كيف يكون البلد / المدينة البيانات المخزنة (هم أيضا في البيانات الأساسية)?التي من شأنها تحديد بعض التفاصيل هنا, ولكن الفكرة الأساسية هي أنه يمكنك استخدام الكاكاو الارتباطات إلى ربط كل NSPopUpButton إلى محتوى NSArrayController.

الكاكاو الارتباطات ليست بسيطة بشكل رهيب, لكنها في الحقيقة لا تعمل مثل السحر مرة واحدة يمكنك الحصول على كل شيء تكوينها بشكل صحيح.المشكلة هي أنه عندما لا يكون لديك أشياء تكوينه بشكل صحيح, فإنه من الصعب تحديد ما هو خطأ.

وهنا الإعداد العام:

تكوين أول NSArrayController أن يكون المحتوى الخاص بك البيانات القطرية.إذا كنت تستخدم البيانات الأساسية ثم يمكنك تمرير ذلك كائن مدار سياق ويكون ذلك إعداد البيانات الخاصة بك Country الكيان.وإلا سيكون لديك لربط محتوى القائمة مجموعة من الكائنات التي تنفذ قيمة مفتاح الترميز متوافقة طريقة الوصول إلى ربط المدن.باستخدام البيانات الأساسية عن مصدر البيانات هنا سوف تجعل حياتك أسهل.

ثم ربط الثاني NSArrayController إلى الحصول على المحتوى من selection الأولى مع المفتاح المناسب المسار إلى المدن.مع البيانات الأساسية ، سوف يكون هذا Content Set (لأنه غير مرتبة).


تحرير: باه التعليق الحقول لا قيمة لها تماما.ها هو الرد السليم على تعليقك الأول:

أن نموذج هذه العلاقة في البيانات الأساسية ، وكنت إعداد النموذج الخاص بك تبدو مثل هذا:

Xcode Model Editor Screenshot

من المهم أن نلاحظ أن أعطيت بلدي الكيانات فئات مخصصة (MBCountry و MBCity).عن طريق طرح كسكودي لتوليد الطبقات بالنسبة لك (حدد الجهة ، انتقل إلى الملف الجديد... و اختيار الكاكاو الفئة -> تمكنت فئة الكائن) ، يمكنك استخدام أسلوب استرجاع القيمة الحقيقية أساليب (بدلا من مجرد valueForKey:).(بوصفها جانبا, أنا حقا قيمة Rentzsch هو Mogenerator أن يقوم بذلك تلقائيا بالنسبة لك على كل حفظ.)

الآن أن النموذج الخاص بك ، يمكنك ملء مخزن البيانات مثل هذا:

NSArray *countryList = ...; /* Get your array of country names */
for (NSString *countryName in countryList) {
    MBCountry *aCountry = (MBCountry *)[NSEntityDescription insertNewObjectForEntityForName:@"MBCountry" inManagedObjectContext:context];
    [aCountry setName:countryName];
    NSArray *cityList = ... /* Get your array of city names for this country */
    for (NSString *cityName in cityList) {
        MBCity *aCity = (MBCity *)[NSEntityDescription insertNewObjectForEntityForName:@"MBCity" inManagedObjectContext:context];
        [aCity setName:cityName];
        [aCountry addCitiesObject:aCity];
    }
}

البيانات الأساسية حقا طريقة مبالغة هنا.ومع ذلك, يبدو أنك تريد استخدام البيانات الأساسية في أقسام أخرى من البرنامج ، لذلك هذا يجعل فرصة تعليمية كبيرة.وقد منحنى التعلم حاد جدا (بالتأكيد واحدة من أصعب جوانب الكاكاو API) ، ولكنها غير قابلة للتنفيذ.تبقي فقط يسد بعيدا!

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