ফাংশন উদাহরণে, (পড়ুন | লিখুন) ডকুমেন্টসফর্মফাইলে (...) কিছু ফাংশন র্যাপস থাকা অবশ্যই বোধগম্য বলে মনে হয় যেহেতু ওএসএক্স এবং আইওএসের সমস্ত কিছুর জন্য তিন বা চারটি প্রধান শ্রেণি ইনস্ট্যান্টিয়েটেড এবং গুচ্ছ বৈশিষ্ট্য, কনফিগার করা, সংযুক্ত, 182 টি দেশে কেবল একটি ফাইলের জন্য "হাই" লিখতে ইনস্ট্যান্টেশনযুক্ত এবং সেট করা হয়েছে।
যাইহোক, এই উদাহরণগুলি বাস্তব প্রোগ্রামে ব্যবহারের জন্য যথেষ্ট পরিপূর্ণ নয়। রাইটিং ফাংশনটি ফাইলটিতে তৈরি বা লেখার ক্ষেত্রে কোনও ত্রুটির প্রতিবেদন করে না। পড়ার সময়, আমি মনে করি না যে কোনও ত্রুটি যে ফাইলটি স্ট্রিং হিসাবে উপস্থিত নেই বলে মনে করা হয় যেটি পড়েছিল এমন ডেটা ধারণ করে return আপনি জানতে চান যে এটি ব্যর্থ হয়েছে এবং কেন, কিছু ব্যতিক্রমের মতো বিজ্ঞপ্তি ব্যবস্থার মাধ্যমে। তারপরে, আপনি এমন কিছু কোড লিখতে পারেন যা সমস্যাটি কীভাবে ফলাফল দেয় এবং ব্যবহারকারীকে এটি সংশোধন করতে দেয় বা "সঠিকভাবে" সেই মুহূর্তে প্রোগ্রামটি ভেঙে দেয়।
আপনি এটিতে "ত্রুটিযুক্ত ফাইলের অস্তিত্ব নেই" দিয়ে একটি স্ট্রিং ফিরিয়ে দিতে চান না। তারপরে, আপনাকে প্রতিবার কলিং ফাংশন থেকে স্ট্রিংয়ের ত্রুটিটি খুঁজতে হবে এবং সেখানে এটি পরিচালনা করতে হবে। ত্রুটিটির স্ট্রিংটি প্রকৃত ফাইল থেকে আসলে পড়েছিল কিনা, বা এটি আপনার কোড থেকে উত্পন্ন হয়েছিল তা আপনি সম্ভবত বলতে পারবেন না।
আপনি এমনকি সুইড ২.২ এবং এক্সকোড .3.৩ এ এই জাতীয় পাঠ্যকে কল করতে পারবেন না কারণ এনএসএসটিং (বিষয়বস্তু অফফিল ...) একটি ব্যতিক্রম ছুঁড়েছে। এটি ধরার জন্য কোনও কোড না থাকলে এবং এটি দিয়ে স্টাডআউটে প্রিন্ট করা, বা আরও ভাল, একটি ত্রুটি পপআপ উইন্ডো, বা স্টেডার এর মতো কিছু না করা থাকলে এটি একটি সংকলন সময় ত্রুটি। আমি শুনেছি অ্যাপল ক্যাপচার এবং ব্যাতিক্রমের চেষ্টা থেকে দূরে চলেছে, তবে এটি একটি দীর্ঘ পদক্ষেপ হতে চলেছে এবং এটি ছাড়া কোড লেখা সম্ভব নয়। আমি জানি না যে & ত্রুটি যুক্তিটি কোথা থেকে এসেছে, সম্ভবত এটি একটি পুরানো সংস্করণ, তবে এনএসএসটিং.উরাইটটো [ফাইল | ইউআরএল] বর্তমানে এনএসইরর যুক্তি নেই। এগুলি এনএসএসস্ট্রিং.এর মতো সংজ্ঞায়িত করা হয়েছে:
public func writeToURL(url: NSURL, atomically useAuxiliaryFile: Bool, encoding enc: UInt) throws
public func writeToFile(path: String, atomically useAuxiliaryFile: Bool, encoding enc: UInt) throws
public convenience init(contentsOfURL url: NSURL, encoding enc: UInt) throws
public convenience init(contentsOfFile path: String, encoding enc: UInt) throws
এছাড়াও, ফাইলটি বিদ্যমান নেই এমন একটি সম্ভাব্য সমস্যাগুলির মধ্যে একটি যা আপনার প্রোগ্রামে কোনও ফাইল পড়তে পারে যেমন কোনও অনুমতি সমস্যা, ফাইলের আকার বা এমন অনেকগুলি সমস্যা যা আপনি এমনকি কোনও হ্যান্ডলারের কোডও চেষ্টা করতে চান না would তাদের প্রতিটি। কেবলমাত্র এটি সমস্ত সঠিক বলে ধরে নেওয়া ভাল এবং ধরা এবং মুদ্রণ করা, বা হ্যান্ডেল করা, যদি কিছু ভুল না ঘটে তবে একটি ব্যতিক্রম, এই মুহুর্তে, আপনার আর কোনও উপায় নেই।
এখানে আমার পুনর্লিখনগুলি:
func writeToDocumentsFile(fileName:String,value:String) {
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString!
let path = documentsPath.stringByAppendingPathComponent(fileName)
do {
try value.writeToFile(path, atomically: true, encoding: NSUTF8StringEncoding)
} catch let error as NSError {
print("ERROR : writing to file \(path) : \(error.localizedDescription)")
}
}
func readFromDocumentsFile(fileName:String) -> String {
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
let path = documentsPath.stringByAppendingPathComponent(fileName)
var readText : String = ""
do {
try readText = NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) as String
}
catch let error as NSError {
print("ERROR : reading from file \(fileName) : \(error.localizedDescription)")
}
return readText
}