এই ক্ষেত্রে সচেতন হন, যখন আপনার অ্যাপটি পটভূমিতে চলছে এবং আপনি NSUserDephaults এ আপনার সঞ্চিত মানগুলি অ্যাক্সেস করতে পারবেন না:
এটি সম্পর্কে অনেক থ্রেড এবং বাগ রয়েছে, তবে আইওএস 9-এ আবার আমার সাথে এটি ঘটছে I পুনরুত্পাদনযোগ্যভাবে, যদি আমি আমার ফোনটি রিবুট করি এবং আমার অ্যাপ্লিকেশনটির ব্যাকগ্রাউন্ড প্রবর্তনের জন্য অপেক্ষা করি, তবে আমি যখন অ্যাপটি খুলি তখন দেখতে পাই যে [[এনএসউসারডেফল্টস স্ট্যান্ডার্ড ইউজারডেফাল্টস] ডিকশনারিপ্রেসিভেশন] এ সমস্ত সিস্টেমের মান রয়েছে, যেমন অ্যাপলআইটিউনস্টোর স্টোর আইটেমকিন্ডস ইত্যাদি রয়েছে তবে এতে নেই but আমি যে মান নির্ধারণ করেছি তার মধ্যে যদি আমি জোর করে ছেড়ে দিতে এবং অ্যাপ্লিকেশনটি পুনরায় চালু করি তবে আমার সমস্ত মান ফিরে আসবে। ফোনটি আনলক হওয়ার আগে থেকেই এটি "খালি" মানক ব্যবহারকারী ডেফাল্টগুলি ক্যাচ করার এড়াতে কি কোনও উপায় আছে বা অ্যাপটি জোর করে ছাড়ার পরে কমপক্ষে তারা কখন গণ্ডগোল করছে তা নির্ধারণ করার জন্য এবং ঠিক করার জন্য?
এখানে সমস্যাটি হ'ল এনএসইউসারডেফাল্টগুলি শেষ পর্যন্ত আপনার অ্যাপ্লিকেশনটির ধারকটিতে থাকা কোনও ফাইল দ্বারা সমর্থন করে এবং আপনার অ্যাপ্লিকেশনটির ধারক ডেটা সুরক্ষার বিষয়। আপনি যদি আইওএস and এবং তারপরেও বিশেষ কিছু না করেন তবে আপনার ধারকটি এনএসফাইলেটপ্রোটেকশন কমপ্লিট ইউন্টিফার্সফার্স ইউজারঅথেন্টিকেশন ব্যবহার করে যা এনএসইউসারডেফাল্টস ব্যাকিং স্টোরের উত্তরাধিকার সূত্রে প্রাপ্ত, এবং তাই আপনি প্রথম আনলক করার আগে এটিকে অ্যাক্সেস করতে পারবেন না।
আইএমও এর সর্বোত্তম উপায় হল যে পটভূমিতে কার্যকর করতে পারে এমন কোড পাথগুলিতে আপনি নির্ভর করে এমন স্টাফের জন্য NSUserDephaults এড়ানো। পরিবর্তে সেই সেটিংসটি আপনার নিজের পছন্দসই ফাইলে সংরক্ষণ করুন, যার ডেটা সুরক্ষা আপনি স্পষ্টভাবে পরিচালনা করতে পারেন (এই ক্ষেত্রে যার অর্থ 'এনএসফাইপ্রোটেকশননোন সেট করা হয়েছে')।
ডেটা সুরক্ষা প্রসঙ্গে এনএসউসারডেফাল্টসে দুটি সমস্যা রয়েছে:
এটি একটি সম্পূর্ণ বিমূর্ত API: এর ব্যাকিং স্টোরের উপস্থিতি এবং অবস্থান সেই API এর অংশ হিসাবে বিবেচিত হয় না, সুতরাং আপনি স্পষ্টভাবে এর ডেটা সুরক্ষা পরিচালনা করতে পারবেন না।
দ্রষ্টব্য ওএস এক্স এর সাম্প্রতিক সংস্করণগুলিতে এনএসউসারডেফাল্টস একটি ডেমন দ্বারা পরিচালিত হয় এবং যে লোকেরা সরাসরি এর ব্যাকিং স্টোরটি পরিচালনা করতে চেষ্টা করে তারা সমস্যার মধ্যে পড়ে। কোনও সময়ে একই ধরণের জিনিসটি আইওএসে আসা কল্পনা করা সহজ।
এমনকি ডেটা সুরক্ষা পরিবর্তন করা সম্ভব হলেও এনএসইউসারডেফাল্টসের যে প্রসঙ্গে আপনি এটি ব্যবহার করছেন তার উপর ভিত্তি করে ডেটা শ্রেণিবদ্ধ করার কোনও ব্যবস্থা নেই; এটি একটি 'সমস্ত বা কিছুই নয়' এপিআই। আপনার ক্ষেত্রে আপনি আপনার ব্যবহারকারীর সমস্ত ডিফল্ট থেকে সুরক্ষা সরাতে চান না, কেবল প্রথম আনলকের আগে পটভূমিতে আপনার অ্যাক্সেস করা দরকার।
শেষ অবধি, যদি এই ডেটাগুলির কোনও সত্যই সংবেদনশীল হয় তবে আপনার এটি কেচেইনে রাখা উচিত। উল্লেখযোগ্যভাবে, কীচেইনটিতে আইটেম-বাই-আইটেমের ভিত্তিতে ডেটা সুরক্ষা সেট করার ক্ষমতা থাকে।