আমি আমার সাম্প্রতিক বাস্তবায়নের ভিত্তিতে আরও কিছু পরামর্শ যুক্ত করতে চাই। আমি অ্যাপলের কিছু কোড দেখেছি এবং আমার ধারণা আমার কোডটিও একইভাবে আচরণ করে।
উপরের পোস্টগুলিতে এনএসিররর অবজেক্টগুলি কীভাবে তৈরি করা যায় এবং সেগুলি ফেরত দেওয়া যায় তা ইতিমধ্যে ব্যাখ্যা করা হয়েছে, সুতরাং আমি সেই অংশটি নিয়ে বিরক্ত করব না। আমি কেবল নিজের অ্যাপ্লিকেশনটিতে ত্রুটিগুলি (কোড, বার্তা) সংহত করার জন্য একটি ভাল উপায়ের পরামর্শ দেওয়ার চেষ্টা করব।
আমি 1 টি শিরোনাম তৈরির প্রস্তাব দিচ্ছি যা আপনার ডোমেনের সমস্ত ত্রুটির (যেমন অ্যাপ্লিকেশন, গ্রন্থাগার, ইত্যাদি ..) এর ওভারভিউ হবে। আমার বর্তমান শিরোনামটি দেখতে এমন দেখাচ্ছে:
FSError.h
FOUNDATION_EXPORT NSString *const FSMyAppErrorDomain;
enum {
FSUserNotLoggedInError = 1000,
FSUserLogoutFailedError,
FSProfileParsingFailedError,
FSProfileBadLoginError,
FSFNIDParsingFailedError,
};
FSError.m
#import "FSError.h"
NSString *const FSMyAppErrorDomain = @"com.felis.myapp";
ত্রুটির জন্য উপরের মানগুলি ব্যবহার করার সময়, অ্যাপল আপনার অ্যাপ্লিকেশনটির জন্য কিছু প্রাথমিক স্ট্যান্ডার্ড ত্রুটি বার্তা তৈরি করবে। নিম্নলিখিতগুলির মতো একটি ত্রুটি তৈরি করা যেতে পারে:
+ (FSProfileInfo *)profileInfoWithData:(NSData *)data error:(NSError **)error
{
FSProfileInfo *profileInfo = [[FSProfileInfo alloc] init];
if (profileInfo)
{
/* ... lots of parsing code here ... */
if (profileInfo.username == nil)
{
*error = [NSError errorWithDomain:FSMyAppErrorDomain code:FSProfileParsingFailedError userInfo:nil];
return nil;
}
}
return profileInfo;
}
error.localizedDescription
উপরের কোডটির জন্য স্ট্যান্ডার্ড অ্যাপল-উত্পাদিত ত্রুটি বার্তা ( ) নীচের মত দেখাবে:
Error Domain=com.felis.myapp Code=1002 "The operation couldn’t be completed. (com.felis.myapp error 1002.)"
উপরোক্ত বিকাশকারীটির জন্য ইতিমধ্যে বেশ সহায়ক, বার্তাটি সেই ডোমেনটি প্রদর্শন করে যেখানে ত্রুটি ঘটেছে এবং সম্পর্কিত ত্রুটি কোড। ত্রুটি কোডটির 1002
অর্থ কী , তবে শেষ ব্যবহারকারীদের কোনও ধারণা নেই , সুতরাং এখন প্রতিটি কোডের জন্য আমাদের কিছু সুন্দর বার্তা কার্যকর করতে হবে।
ত্রুটি বার্তাগুলির জন্য আমাদের স্থানীয়করণকে মাথায় রাখতে হবে (আমরা এখনই স্থানীয়করণ করা বার্তাগুলি বাস্তবায়ন করি না)। আমি আমার বর্তমান প্রকল্পে নিম্নলিখিত পদ্ধতিটি ব্যবহার করেছি:
1) একটি strings
ফাইল তৈরি করুন যাতে ত্রুটি থাকবে। স্ট্রিং ফাইলগুলি সহজেই স্থানীয়করণযোগ্য। ফাইলটি নিম্নলিখিতগুলির মতো দেখতে পারে:
FSError.strings
"1000" = "User not logged in.";
"1001" = "Logout failed.";
"1002" = "Parser failed.";
"1003" = "Incorrect username or password.";
"1004" = "Failed to parse FNID."
2) স্থানীয় ত্রুটি বার্তায় পূর্ণসংখ্যার কোড রূপান্তর করতে ম্যাক্রোগুলি যুক্ত করুন। আমি আমার কনস্ট্যান্টস + ম্যাক্রোস ফাইল ফাইলটিতে 2 টি ম্যাক্রো ব্যবহার করেছি। MyApp-Prefix.pch
সুবিধার জন্য আমি এই ফাইলটি সর্বদা উপসর্গ শিরোনামে অন্তর্ভুক্ত করি ।
ধ্রুবক + + Macros.h
// error handling ...
#define FS_ERROR_KEY(code) [NSString stringWithFormat:@"%d", code]
#define FS_ERROR_LOCALIZED_DESCRIPTION(code) NSLocalizedStringFromTable(FS_ERROR_KEY(code), @"FSError", nil)
3) এখন একটি ত্রুটি কোডের উপর ভিত্তি করে কোনও ব্যবহারকারী বান্ধব ত্রুটি বার্তা প্রদর্শন করা সহজ। একটি উদাহরণ:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:FS_ERROR_LOCALIZED_DESCRIPTION(error.code)
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];