これは一般的なエラーですが、ここに投稿するのはよくあることですが、根本的に同じであっても何をしているのかわかりません。私はスイフトには新しく、ちょうど私の道を見つけようとしています、ありがとう。Swift:Unknown error - アンラッピング中に予期せずnilが見つかりました。オプション値
初めてアプリケーションを開くときに、MYSQLデータベースから読み込んだブログリーダーアプリが意図したとおりに機能し、選択したブログに従うことができます。ブログ/セルに従うとKeyArchiverを使ってUser Defaultsに保存されますが、ホームボタンをタップしてメモリからアプリをクリアしてアプリを再度開くとクラッシュします。私はブレークポイントを設定しているため、間違った
何かが私のloadUserDefaults
に起こっている、それは私が、私は任意ですが、なぜそれは私がsaveUserDefaults
でそれを保存した場合はnil戻って来て/クラッシュさを持って知っている。このラインでself.followedIdentifiers = Set(UserDefaults.standard.stringArray(forKey: "followedID")!)
をクラッシュします。それは貯蓄ではありませんか?それとも正しくロードしていないのですか?
エラーがコードこの
fatal error: unexpectedly found nil while unwrapping an Optional value
です:これはこれは私が保存しFile Manager
を使用するすべてのブログのオブジェクトを処理Blog.swift
とNSCoding
class Blog: NSObject, NSCoding {
var blogName: String
var blogStatus1: String
var blogStatus2: String
var blogURL: String
var blogID: String
var blogType: String
var blogDate: String
var blogPop: String
private init (name: String,status1: String,status2: String,url: String,id: String,type: String,date: String,pop: String) {
blogName = name
blogStatus1 = status1
blogStatus2 = status2
blogURL = url
blogID = id
blogType = type
blogDate = date
blogPop = pop
super.init()
}
convenience init?(jsonObject: [String:Any]) {
guard let bID = jsonObject["id"] as? String,
let bName = jsonObject["blogName"] as? String,
let bStatus1 = jsonObject["blogStatus1"] as? String,
let bStatus2 = jsonObject["blogStatus2"] as? String,
let bURL = jsonObject["blogURL"] as? String,
let bType = jsonObject["blogType"] as? String,
let bDate = jsonObject["blogDate"] as? String,
let bPop = jsonObject["blogPop"] as? String
else {
print("Error: (Creating Blog Object)")
return nil
}
self.init(name: bName, status1: bStatus1, status2: bStatus2, url: bURL, id: bID, type: bType, date: bDate, pop: bPop)
}
convenience required init?(coder aDecoder: NSCoder) {
guard let blogName = aDecoder.decodeObject(forKey: "blogName") as? String,
let blogStatus1 = aDecoder.decodeObject(forKey: "blogStatus1") as? String,
let blogStatus2 = aDecoder.decodeObject(forKey: "blogStatus2") as? String,
let blogURL = aDecoder.decodeObject(forKey: "blogURL") as? String,
let blogID = aDecoder.decodeObject(forKey: "blogID") as? String,
let blogType = aDecoder.decodeObject(forKey: "blogType") as? String,
let blogDate = aDecoder.decodeObject(forKey: "blogDate") as? String,
let blogPop = aDecoder.decodeObject(forKey: "blogPop") as? String else {
print("Error: (Creating Blog Object)")
return nil
}
self.init(name: blogName, status1: blogStatus1, status2: blogStatus2, url: blogURL, id: blogID, type: blogType, date: blogDate, pop: blogPop)
}
func encode(with aCoder: NSCoder) {
aCoder.encode(blogName, forKey: "blogName")
aCoder.encode(blogStatus1, forKey: "blogStatus1")
aCoder.encode(blogStatus2, forKey: "blogStatus2")
aCoder.encode(blogURL, forKey: "blogURL")
aCoder.encode(blogID, forKey: "blogID")
aCoder.encode(blogType, forKey: "blogType")
aCoder.encode(blogDate, forKey: "blogDate")
aCoder.encode(blogPop, forKey: "blogPop")
}
}
をロードするために使用@GuyKogus、@ Paulw11 & @MartinR
私のオブジェクトを保存するために使用しにあなたが読むことを試行し*データ*を保存しているようです*文字列配列として返す* –
なぜ 'self.followedIdentifiers'に2回割り当てますか?最初の割り当ては意味があり、2番目の割り当ては意味がありません。 –
@MartinRだから、 'data'として読み返すのですか、' data'ではなく 'string array'で保存するのですか? 2番目のコメントのために、私がなぜそれをしたのかわからないので、 'self.followedIdentifiers'の代わりに' myFollowedList'を使用しますか? – BroSimple