আমি এটিকে একটি উত্তর হিসাবে ছুঁড়ে দিচ্ছি, যদিও এটি চার্লসের স্নিপেটে সত্যই শোভনীয়। এনএসএলগের সোজা আউটপুটটি পড়তে এবং ব্যাখ্যা করতে কোনও গোলমাল হতে পারে, তাই আমি কিছু সাদা স্থান ফেলে দিতে এবং কিছু সমালোচিত 'ইউজারআইএনফো' কীগুলির মানটি কল করতে চাই।
আমি যে পদ্ধতিটি ব্যবহার করছি তার একটি সংস্করণ এখানে। ('_ SharedManagedObjectContext' '' [[[[ইউআইএএপ্লিকেশন শেয়ারড অ্যাপ্লিকেশন] ডেলিগেট] ম্যানেজডঅবজেক্ট কনটেক্সট] 'এর জন্য একটি # নির্দিষ্ট সংজ্ঞা)))
- (BOOL)saveData {
NSError *error;
if (![_sharedManagedObjectContext save:&error]) {
// If Cocoa generated the error...
if ([[error domain] isEqualToString:@"NSCocoaErrorDomain"]) {
// ...check whether there's an NSDetailedErrors array
NSDictionary *userInfo = [error userInfo];
if ([userInfo valueForKey:@"NSDetailedErrors"] != nil) {
// ...and loop through the array, if so.
NSArray *errors = [userInfo valueForKey:@"NSDetailedErrors"];
for (NSError *anError in errors) {
NSDictionary *subUserInfo = [anError userInfo];
subUserInfo = [anError userInfo];
// Granted, this indents the NSValidation keys rather a lot
// ...but it's a small loss to keep the code more readable.
NSLog(@"Core Data Save Error\n\n \
NSValidationErrorKey\n%@\n\n \
NSValidationErrorPredicate\n%@\n\n \
NSValidationErrorObject\n%@\n\n \
NSLocalizedDescription\n%@",
[subUserInfo valueForKey:@"NSValidationErrorKey"],
[subUserInfo valueForKey:@"NSValidationErrorPredicate"],
[subUserInfo valueForKey:@"NSValidationErrorObject"],
[subUserInfo valueForKey:@"NSLocalizedDescription"]);
}
}
// If there was no NSDetailedErrors array, print values directly
// from the top-level userInfo object. (Hint: all of these keys
// will have null values when you've got multiple errors sitting
// behind the NSDetailedErrors key.
else {
NSLog(@"Core Data Save Error\n\n \
NSValidationErrorKey\n%@\n\n \
NSValidationErrorPredicate\n%@\n\n \
NSValidationErrorObject\n%@\n\n \
NSLocalizedDescription\n%@",
[userInfo valueForKey:@"NSValidationErrorKey"],
[userInfo valueForKey:@"NSValidationErrorPredicate"],
[userInfo valueForKey:@"NSValidationErrorObject"],
[userInfo valueForKey:@"NSLocalizedDescription"]);
}
}
// Handle mine--or 3rd party-generated--errors
else {
NSLog(@"Custom Error: %@", [error localizedDescription]);
}
return NO;
}
return YES;
}
এটি আমাকে 'এনএসভালিডেশনআররকি'-এর মান দেখতে দেয়, যা আমি যখন ওপি থেকে সমস্যাটির মুখোমুখি হয়েছিলাম, সরাসরি অ-optionচ্ছিক মূল ডেটা সত্তাগুলির দিকে ইঙ্গিত করলাম যা সংরক্ষণ করার চেষ্টা করার আগে সেট করতে ভুলে গিয়েছিলাম।