我在ios swift中作業,在這里我使用了核心資料來存盤值,并撰寫了一些函式來尋找資料并回傳它。
public func insertdetails (id: String, data: String, createdAt: String){
do{
try self.userdetails.operation { (context, save) throws -> Void in
let model : User = try! context.create()
model.id = id
model.details = data
model.createdat = createdAt
保存()
}
}
}
public func fetchdetails (Id: String) -> String{
do{
let predicate: NSPredicate = NSPredicate(格式。"id == %@", Id)
let記錄。User = try! self. userdetails.fetch(FetchRequest<User>()。 filtered(with: predicate)).first ? "" // **here im getting error**
return record.details ? ""
}
}
在第一段代碼中,它表示物件模型。 在第二段代碼中,我面臨錯誤。 我得到的錯誤是沒有將字串型別的值轉換為預期的引數型別User,即使我強制包裝它,假設值不存在,應用程式會崩潰。
uj5u.com熱心網友回復:
你的fetch請求將回傳一個User物件的陣列,但是你在nil凝聚運算子的右手邊有一個字串;這就是為什么你有一個錯誤。
你不能用一個字串來代替User。你可能不希望這里有一個nil凝聚運算子。 只需處理可選的。
如果函式本身回傳一個可選的字串,那可能會更好。Swift選項旨在取代哨兵值,比如你在這里使用的空字串。
public func fetchDetails (id: String) -> String? {
let fetchRequest : FetchRequest<User> = User.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "id == %@"/span>, id)
do {
if let record = try self. userdetails.fetch(FetchRequest<User>().first {
return record.details
}
} catch {
print("fetch error - (錯誤)")
}
return nil }
}
uj5u.com熱心網友回復:
錯誤的發生是因為first回傳一個User,而這個User與一個空字串沒有關系。
并將該謂詞附加到獲取請求中。Core Data會代表你過濾這些記錄。
public func fetchdetails (Id: String) -> String{
do{
let fetchRequest : FetchRequest<User> = User.fetchRequest()
fetchRequest.predicate = NSPredicate(格式。"id == %@", Id)
return try self.userdetails. fetch(fetchRequest).first?.details ? ""。
}
} catch {
print(error)
return ""
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/306788.html
標籤:
