मैं अपने मॉडल वर्गों के लिए एक सामान्य एन्कोडर और डिकोडर बनाने की कोशिश कर रहा था। मैं "एन्कोड विधि" को सभी प्रकार की संपत्तियों, या तो ऑब्जेक्ट्स (एनएसएसटींग, एनएसएनंबर, एनएसएआरएआरई, आदि ...) और आदिम प्रकारों के लिए कॉल करने का तरीका खोजने का प्रयास कर रहा था। और मैंने देखा कि कोई निम्नलिखित कर रहा है। और मैं सोच रहा था कि क्या यह करने का सही तरीका होगा।एनएससीओडी: प्राचीन प्रकार के लिए एन्कोडर और डिकोडर
गुण:
@property (assign,nonatomic) int integerP;
@property (assign,nonatomic) float floatP;
@property (assign,nonatomic) BOOL boolP;
Enconder और डिकोडर कोड:
- (void)encodeWithCoder:(NSCoder *)encoder
{
id object2 = [self valueForKey:@"integerP"];
id object3 = [self valueForKey:@"floatP"];
id object4 = [self valueForKey:@"boolP"];
[encoder encodeObject:object2 forKey:@"integerP"];
[encoder encodeObject:object3 forKey:@"floatP"];
[encoder encodeObject:object4 forKey:@"boolP"];
//[self setValue:[NSNumber numberWithInt:90] forKey:@"heightR"];
//NSLog(@"%@",[self valueForKey:@"heightR"]);
}
- (id)initWithCoder:(NSCoder *)decoder
{
self = [super init];
if(self != nil)
{
id object2 = [decoder decodeObjectForKey:@"integerP"];
[self setValue:object2 forKey:@"integerP"];
id object3 = [decoder decodeObjectForKey:@"floatP"];
[self setValue:object3 forKey:@"floatP"];
id object4 = [decoder decodeObjectForKey:@"boolP"];
[self setValue:object4 forKey:@"boolP"];
}
return self;
}
मैं अगर यह एक सही तरीका है, या यकीन नहीं था अन्य प्रोग्राम या वस्तु में लिख सकता है अगर आदिम गुणों की एक ही स्मृति स्थान।
तरह से मैंने सोचा था कि सही था:
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeInt:integerP forKey:@"integerP"];
[encoder encodeFloat:floatP forKey:@"floatP"];
[encoder encodeBool:boolP forKey:@"boolP"];
//[self setValue:[NSNumber numberWithInt:90] forKey:@"heightR"];
//NSLog(@"%@",[self valueForKey:@"heightR"]);
}
- (id)initWithCoder:(NSCoder *)decoder
{
self = [super init];
if(self != nil)
{
integerP = [decoder decodeIntForKey:@"integerP"];
floatP = [decoder decodeFloatForKey:@"floatP"];
boolP = [decoder decodeBoolForKey:@"boolP"];
}
return self;
}
मैं परीक्षण किया है और दोनों तरीकों सही मान लौटे तो विधि ऊपर सही है, ऊपर है और इस के बीच अंतर क्या है।
मुझे समझ नहीं आता। एन्कोडिंग/डिकोडिंग आदिम प्रकारों के लिए पहले से ही विधियां हैं, आप उनका उपयोग क्यों नहीं करेंगे? मेरे लिए, दूसरी विधि अधिक सही है। – Bejil