কখনও কখনও আমি যখন এক্সকোড থেকে ডিভাইসে কোনও অ্যাপ্লিকেশন চালিত করি তখন আমি কীচেইনটি অ্যাক্সেস করার চেষ্টা করতাম তবে ত্রুটির কারণে ব্যর্থ হয়েছি -34018। এটি কোনও নথিভুক্ত কীচেইন ত্রুটি কোডের সাথে মেলে না এবং ধারাবাহিকভাবে পুনরুত্পাদন করা যায় না। (সময় হতে পারে 30%, এবং এটি কেন ঘটে তা আমার কাছে পরিষ্কার নয়)। এই সমস্যাটি ডিবাগিংকে কী খুব কঠিন করে তোলে তা হ'ল ডকুমেন্টেশনের মোট অভাব। কোনও ধারণা যা এর কারণ এবং কীভাবে এটি ঠিক করবেন? আমি এক্সকোড 5 ব্যবহার করছি এবং ডিভাইসে আইওএস 7.0.4 চালাচ্ছি।
এটি সম্পর্কে এখানে একটি মুক্ত বিষয় রয়েছে: https://github.com/soffes/sskeychain/issues/52
সম্পাদনা: অনুরোধ অনুযায়ী কীচেন অ্যাক্সেস কোড যুক্ত করা হচ্ছে
আমি SSKeychain
কীচেইনের সাথে ইন্টারফেস করার জন্য লাইব্রেরিটি ব্যবহার করছি । এখানে স্নিপেট।
#define SERVICE @"default"
@implementation SSKeychain (EXT)
+ (void)setValue:(NSString *)value forKey:(NSString *)key {
NSError *error = nil;
BOOL success = NO;
if (value) {
success = [self setPassword:value forService:SERVICE account:key error:&error];
} else {
success = [self deletePasswordForService:SERVICE account:key error:&error];
}
NSAssert(success, @"Unable to set keychain value %@ for key %@ error %@", value, key, error);
if (!success) {
LogError(@"Unable to set value to keychain %@", error);
}
LogTrace(@"Will set keychain account %@. is to nil? %d", key, value == nil);
if (value == nil)
LogWarn(@"Setting keychain %@ to nil!!!", key);
}
+ (NSString *)valueForKey:(NSString *)key {
NSError *error = nil;
NSString *value = [self passwordForService:SERVICE account:key error:&error];
if (error && error.code != errSecItemNotFound) {
NSAssert(!error, @"Unable to retrieve keychain value for key %@ error %@", key, error);
LogError(@"Unable to retrieve keychain value for key %@ error %@", key, error);
}
return value;
}
+ (BOOL)removeAllValues {
LogInfo(@"Completely Reseting Keychain");
return [[self accountsForService:SERVICE] all:^BOOL(NSDictionary *accountInfo) {
return [self deletePasswordForService:SERVICE account:accountInfo[@"acct"]];
}];
}
@end
বেশিরভাগ সময় এটি ঠিক আছে। কখনও কখনও আমি দৃ fail়তা ব্যর্থতাগুলিতে আঘাত করব যেখানে আমি হয় কীচেইন থেকে লিখতে বা পড়তে অক্ষম হয়েছি, সমালোচনামূলক দৃser় ব্যর্থতার কারণ হ'ল।