[নতুন প্রতিক্রিয়া জিজ্ঞাসা করা একটি অনুগ্রহের প্রতিক্রিয়ায় দেরিতে উত্তর]
পূর্ববর্তী উত্তরগুলি সন্ধান করছি,
- @ গ্রেচাল এবং অন্যান্যদের পরামর্শ অনুসারে সমস্ত আইটেম আনা এবং মুছে ফেলা এখনও কার্যকর এবং দরকারী সমাধান। আপনার যদি খুব বড় ডেটা স্টোর থাকে তবে এটি ধীর হতে পারে তবে এটি এখনও খুব ভালভাবে কাজ করে।
- কেবলমাত্র আপনি এবং @ গ্রাউন্ডহোগ নোট হিসাবে ডেটা স্টোরটি অপসারণ করা কার্যকর হয় না। আপনি বাহ্যিক বাইনারি স্টোরেজ ব্যবহার না করলেও এটি অপ্রচলিত কারণ আইওএস 7 এসকিউএলাইট জার্নালিংয়ের জন্য ওয়াল মোড ব্যবহার করে। ওয়াল মোডের সাথে (কোনও সম্ভাব্য বৃহত্তর) জার্নাল ফাইলগুলি কোনও কোর ডেটা ধ্রুবক স্টোরের জন্য বসে থাকতে পারে।
কিন্তু কাজ করে এমন অবিচ্ছিন্ন স্টোরটি অপসারণ করার জন্য আলাদা, অনুরূপ পদ্ধতি রয়েছে। কীটি হ'ল আপনার অবিরাম স্টোর ফাইলটিকে তার নিজস্ব উপ ডিরেক্টরিতে রেখে দেওয়া যাতে অন্য কিছু নেই। এটি কেবল দস্তাবেজ ডিরেক্টরিতে (বা যে কোনও জায়গায়) আটকে থাকবেন না, কেবল অবিরাম স্টোরের জন্য একটি নতুন উপ-ডিরেক্টরি তৈরি করুন। সেই ডিরেক্টরিটির বিষয়বস্তুগুলি স্থির স্টোর ফাইল, জার্নাল ফাইলগুলি এবং বাহ্যিক বাইনারি ফাইলগুলি হিসাবে শেষ হবে। আপনি যদি পুরো ডেটা স্টোরকে কড়াতে চান তবে সেই ডিরেক্টরিটি মুছুন এবং সেগুলি সমস্ত অদৃশ্য হয়ে যাবে।
আপনার অবিরাম স্টোর সেট আপ করার সময় আপনি এই জাতীয় কিছু করবেন:
NSURL *storeDirectoryURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"persistent-store"];
if ([[NSFileManager defaultManager] createDirectoryAtURL:storeDirectoryURL
withIntermediateDirectories:NO
attributes:nil
error:nil]) {
NSURL *storeURL = [storeDirectoryURL URLByAppendingPathComponent:@"MyApp.sqlite"];
// continue with storeURL as usual...
}
তারপরে আপনি যখন দোকানটি সরাতে চেয়েছিলেন,
[[NSFileManager defaultManager] removeItemAtURL:storeDirectoryURL error:nil];
এটি পুনরাবৃত্তভাবে কাস্টম সাব-ডিরেক্টরি এবং এতে থাকা সমস্ত কোর ডেটা ফাইল উভয়ই সরিয়ে দেয়।
এটি কেবলমাত্র তখনই কার্যকর হয় যদি আপনার কাছে অন্য, গুরুত্বপূর্ণ ডেটার মতো একই ফোল্ডারে আপনার অবিরাম স্টোর না থাকে । দস্তাবেজ ডিরেক্টরিতে পছন্দ করুন, এতে সম্ভবত অন্যান্য দরকারী জিনিস রয়েছে। যদি এটি আপনার অবস্থা, প্রথমে আপনাকে ফাইল খুঁজছেন যে আপনার একই এফেক্ট পেতে পারে না রাখতে চান এবং অন্য সব কিছুর সরিয়ে ফেলা হয়। কিছুটা এইরকম:
NSString *docsDirectoryPath = [[self applicationDocumentsDirectory] path];
NSArray *docsDirectoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:docsDirectoryPath error:nil];
for (NSString *docsDirectoryItem in docsDirectoryContents) {
// Look at docsDirectoryItem. If it's something you want to keep, do nothing.
// If it's something you don't recognize, remove it.
}
এই পদ্ধতির ত্রুটি প্রবণ হতে পারে । আপনার কখনই নিশ্চিত করুন যে আপনি কি জানেন হতে পেয়েছেন যে , আপনি রাখতে চান ফাইল কারণ অন্যথায় আপনি গুরুত্বপূর্ণ ডাটা অপসারণ করতে পারেন। অন্যদিকে, আপনি সঞ্চয় করার জন্য ব্যবহৃত ফাইল / ডিরেক্টরি নামটি না জেনে বাহ্যিক বাইনারি ফাইলগুলি সরাতে পারেন।
NSBatchDeleteRequest
। stackoverflow.com/a/31961330/3681880