web api JSONとからのコアデータに画像を保存できませんget_details?.logoは文字列データ型で、task.logoはコアデータのバイナリデータにあります自分のコードで何が問題なのかを直接知ることはできません資産からのイメージは動作しますが、JSON APIからは保存されません! bookmarktoCoredataこの問題が解決することができますどのようにイメージはWeb API JSON形式からCoreDataに保存されませんか?
func bookmarktoCoredata(){
let alert = UIAlertController(title: "Add BookMark", message: "", preferredStyle: .alert)
let add = UIAlertAction(title: "Add", style: .default){
(action) in
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let fetchId = ((self.get_details?.schoolid)!)
let bookmarkFetch: NSFetchRequest<Bookmark> = NSFetchRequest(entityName: "Bookmark")
bookmarkFetch.predicate = NSPredicate(format: "bookmark_id == %d", fetchId)
do {
let fetchedBookmarks = try context.fetch(bookmarkFetch)
// you should find 1
if fetchedBookmarks.count == 1 {
print("same id")
} else if fetchedBookmarks.count == 0 {
// There is no Bookmark with this id so create a new one
let task = Bookmark(context: context)
// Populate all the properties here and save
task.bookmark_id = Int16((self.get_details?.schoolid)!)
task.name = self.get_details?.name
task.address = self.get_details?.address
task.district = self.get_details?.district
task.country = self.get_details?.country
task.phone = self.get_details?.phone
task.email = self.get_details?.email
task.website = self.get_details?.website
task.institution = self.get_details?.institution_type
task.establishment = self.get_details?.establishment_date
task.admission_open = self.get_details?.admission_open_from
task.admission_end = self.get_details?.admission_open_from
task.latitude = (self.get_details?.latitude)!
task.longitude = (self.get_details?.longitude)!
task.bookmark_type = "school"
**if let imgdata = ((self.get_details?.logo)){
task.logo = (UIImage(named: imgdata)) as NSData
}**
(UIApplication.shared.delegate as! AppDelegate).saveContext()
// Populate all the properties here and save
} else {
// If you get here you have more than one with the same id. Fix error
}
} catch {
fatalError("Failed to fetch bookmark: \(error)")
}
}
FUNC
?
「get_details?.logo」という文字列の例を挙げてください。 –
get_details?.logo JSON APIからのモデルクラスの文字列データ型で、そのデータをバイナリデータのコアデータに保存する必要があります。@JonRose –
サーバーから取得する文字列を使用する方法(つまり、UIImage(名前:imgdata ) ')あなたがバンドル内のパスを参照するような文字列(例えば' logo1.png'のようなもの)を期待しているようですが、それについて話をすると、base64データのように見えます。 –