تحرير صف البيانات الأساسية من الكيان المرتبط بـ ManagedObjectContext عبر العلاقة

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

سؤال

أحتاج إلى تعديل صف من البيانات في كيان له علاقة مع كياني الرئيسي من بلدي 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 ، كلما كان من الصعب تحويل التروس إلى البيانات الأساسية وواجهة برمجة تطبيقات الكائن الأخرى. تريد ترجمة الأشياء الجديدة إلى ما أتقنته بالفعل. إنه طبيعي ولكن يقاوم الرغبة.

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