تحرير صف البيانات الأساسية من الكيان المرتبط بـ ManagedObjectContext عبر العلاقة
-
30-09-2019 - |
سؤال
أحتاج إلى تعديل صف من البيانات في كيان له علاقة مع كياني الرئيسي من بلدي regedresultscontroller ، في هذه الحالة "Theuser" كونه مثيل لكيان المستخدم الخاص بي.
أحتاج أساسًا إلى تحرير أحد صفوف المعاناة الموجودة بالفعل وحفظها. يمكنني الوصول إلى "الرسائل" بشكل جيد كما تراه أدناه ، لكنني غير متأكد بمجرد أن أجد المعاناة التي أريدها حول كيفية حفظها مرة أخرى في ManagedObjectContext لـ "Theuser"
اي نصيحه؟
NSArray *msgs = [theUser.Messages allObjects];
NSPredicate *activeMatch = [NSPredicate predicateWithFormat:@"defaultMessage == 1"];
NSArray *matched = [msgs filteredArrayUsingPredicate:activeMatch];
CannedMessage *msgToEdit;
for(CannedMessage *msg in matched) {
msgToEdit = msg;
}
المحلول
مشكلتك هي أن تفكيرك في شروط SQL بدلاً من المصطلحات الموجهة للكائنات الأساسية. البيانات التي تبحث عنها ليست في صف SQL ولكن في سمة كائن مُدار. في هذه الحالة (أفترض) أنك تبحث عن سمة من أ CannedMessage
نموذج.
ال matched
سوف تحتوي الصفيف إما على كائنات مُدارة تم تهيئتها باستخدام CannedMessage
كيان أو مثيل من فئة فرعية مخصصة لـ NSManagedObject (إذا قمت بإعداد واحد يبدو أنك فعلت.)
دعنا نقول أن السمة تم تسميتها theMsg
. للوصول إلى السمة في الكائنات المدارة العامة:
for(CannedMessage *msg in matched) {
msgToEdit = [msg valueForKey:@"theMsg"];
}
... للوصول إلى فئة مخصصة:
for(CannedMessage *msg in matched) {
msgToEdit = msg.theMsg;
}
من المهم حقًا عند تعلم البيانات الأساسية أن تنسى ببساطة كل ما تعرفه عن SQL. لا شيء عن SQL يترجم حقًا إلى بيانات أساسية. البيانات الأساسية ليست موجهة نحو الكائن ملفوفة حول SQL. الكيانات ليست جداول ، والعلاقات لا تربط الجداول أو الصلات ، والسمات ليست أعمدة والقيم ليست صفوف. بدلاً من ذلك ، تقوم البيانات الأساسية بإنشاء كائنات مثلك تمامًا إذا كتبت يدويًا فئة مخصصة لتصميم كائن أو حدث أو حالة العالم الحقيقي. تستخدم البيانات الأساسية SQL تقريبًا كأحد خيارات الثبات العديدة.
في تجربتي ، كلما عرفت أكثر عن SQL ، كلما كان من الصعب تحويل التروس إلى البيانات الأساسية وواجهة برمجة تطبيقات الكائن الأخرى. تريد ترجمة الأشياء الجديدة إلى ما أتقنته بالفعل. إنه طبيعي ولكن يقاوم الرغبة.