আপডেট : এই সমস্যাটি Xcode 8.2 এ স্থির করা হয়েছে। কীচেইন কীচেন ভাগ করে নেওয়া সক্ষম না করে সিমুলেটারে কাজ করে।
এক্সকোড 8 / আইওএস 10 সিমুলেটারে ফাংশন কল করার সময় আমি কেন সর্বদা ত্রুটি -34018 পাচ্ছি ?SecItemAdd
ধাপ পুনর্গঠন কর
এক্সকোড ৮ এ একটি নতুন একক পৃষ্ঠার আইওএস অ্যাপ্লিকেশন তৈরি করুন the নিম্নলিখিত কোডটি চালান viewDidLoad
(বা এই এক্সকোড প্রকল্পটি খুলুন )।
let itemKey = "My key"
let itemValue = "My secretive bee 🐝"
// Remove from Keychain
// ----------------
let queryDelete: [String: AnyObject] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: itemKey as AnyObject
]
let resultCodeDelete = SecItemDelete(queryDelete as CFDictionary)
if resultCodeDelete != noErr {
print("Error deleting from Keychain: \(resultCodeDelete)")
}
// Add to keychain
// ----------------
guard let valueData = itemValue.data(using: String.Encoding.utf8) else {
print("🐣🐣🐣🐣🐣🐣🐣🐣🐣🐣 Error saving text to Keychain")
return
}
let queryAdd: [String: AnyObject] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: itemKey as AnyObject,
kSecValueData as String: valueData as AnyObject,
kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlocked
]
let resultCode = SecItemAdd(queryAdd as CFDictionary, nil)
if resultCode != noErr {
print("🐝🐝🐝🐝🐝🐝🐝🐝🐝 Error saving to Keychain: \(resultCode).")
} else {
print("🍀🍀🍀🍀🍀🍀🍀🍀🍀 Saved to keychain successfully.")
}
প্রত্যাশিত ফলাফল
আইটেমটি কীচেইনে যুক্ত করা হয়েছে।
প্রকৃত ফলাফল
ফাংশন SecItemAdd ফেরৎ নিম্নলিখিত ত্রুটির কোড: -34018
।
সংস্করণ
এক্সকোড সংস্করণ 8.1 (8 বি 62), ম্যাকস সিয়েরা 10.12.1।
কনফিগারেশন
আইওএস 10 সিমুলেটারে পরীক্ষার সময় বিটা 2 থেকে সর্বদা এক্সকোড 8 এ ঘটে।
কোনও আইওএস 9.3 সিমুলেটারে পরীক্ষা করার সময় এক্সকোড 8 এ ঘটে না।
ডেমো
https://dl.dropboxusercontent.com/u/11143285/2016/07/KeychainBugDemo.zip
তথ্যসূত্র
রাডার: https://openradar.appspot.com/27422249
অ্যাপল বিকাশকারী ফোরাম: https://forums.developer.apple.com/message/179846
এই সমস্যাটি নিম্নলিখিত পোস্টের থেকে পৃথক কারণ এটি ধারাবাহিকভাবে Xcode 8 এ ঘটে Sec