الحصول على قيمة الحد الأدنى من سمة في صنع NSSet من علاقة واحد الى وكثيرون في البيانات الأساسية

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

  •  06-07-2019
  •  | 
  •  

سؤال

ولدي العديد من الأشياء التي أنشئت في كور البيانات، واحدة منها هي "الطابق" واحد منها هو "بطاقة". "بطاقات" ديك العديد من العلاقات مرقمة، بما في ذلك "المعرف". "الطابق" له علاقة واحد لكثير مع البطاقات.

ما هي أفضل طريقة للعثور على بطاقة في سطح السفينة التي لديها الحد الأدنى لقيمة لبعض السمة مرقمة، مثل هوية؟

ومن الواضح يمكنني الحصول على قائمة من البطاقات مثل هذا:

NSSet *cardList = self.cards;

وأعتقد أنني يمكن أن نبني تعبير للحصول على الحد الأدنى من هذا القبيل:

NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"id"];
NSExpression *minExpression = [NSExpression expressionForFunction:@"min:" 
            arguments:[NSArray arrayWithObject:keyPathExpression]];

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

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

المحلول

ويمكنك القيام بذلك باستخدام الترميز الرئيسية ذات القيمة:

//assuming Card has an Id property which is a number
NSNumber *minId = [deck valueForKeyPath:@"cards.@min.Id"];

NSSet *minCards = [[deck cards] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"Id==%@", minId]];

وسيعطي NSSet البطاقات التي تساوي الحد الأدنى في Id الملكية deck.cards.

وانظر الرئيسية ذات القيمة البرمجة وصف دليل لل<لأ href = "http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/ArrayOperators.html#//apple_ref/doc / رمز المستخدم / 20002176 "يختلط =" noreferrer "> مجموعة وصفيف مشغلي للحصول على مزيد من المعلومات.

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