В приведенном ниже коде из JSON я могу сохранять и извлекать текстовые значения в метке, но я не могу отображать изображения в tableView.Пожалуйста, помогите мне преобразовать String в NSData и при получении NSData в String.
Это JSON
{
"actors": [
{
"name": "Brad Pitt",
"description": "William Bradley 'Brad' Pitt is an American actor and film producer. He has received a Golden Globe Award, a Screen Actors Guild Award, and three Academy Award nominations in acting categories",
"dob": "December 18, 1963",
"country": "United States",
"height": "1.80 m",
"spouse": "Jennifer Aniston",
"children": "Shiloh Nouvel Jolie-Pitt, Maddox Chivan Jolie-Pitt",
"image": "http://microblogging.wingnity.com/JSONParsingTutorial/brad.jpg"
}, ....
здесь, как сохранить URL-адрес изображения в CoreData и получить, чтобы показать изображения в tableView
Это структура
struct JsonData {
var nameS: String?
var picS: String?
var spouseS: String?
init(name: String, image: String, spouse: String) {
self.nameS = name
self.picS = image
self.spouseS = spouse
}
}
для сохранения, я так и сделал.Если это не так, пожалуйста, предложите мне, как сохранить
let actors = jsonObj["actors"] as! [[String: Any]]
for actor in actors {
let name = actor["name"] as! String
let pic = actor["image"] as! String
let spouse = actor["spouse"] as! String
let coreData = NSEntityDescription.insertNewObject(forEntityName: "Actor", into: self.context) as! Actor
coreData.name = name
coreData.spouse = spouse
//Converting NSString to NSData
let data = pic.data(using: .utf8)
//assigning NSData value to core data attribute
coreData.image = data! as NSData//picNSData as NSData
print("core data saved images \(coreData.image!)")
}
во время выборки. Я попробовал вот так
func fetchData() {
do {
let fetchRequest : NSFetchRequest<Actor> = Actor.fetchRequest()
let actors = try context.fetch(fetchRequest)
if actors.count > 0 {
for actor in actors as [Actor] {
let nameCore = actor.value(forKey: "name")
let spouseCore = actor.value(forKey: "spouse")
//here imageData contains nsdata
let imageData = actor.value(forKey: "image")
//converting NSData to String for append JsonData Struct
let imageCore = String(describing: imageData!)
print("we r in fetch image.. \(imageCore)")
self.iteamsArray.append(JsonData(name: nameCore as! String, image: imageCore , spouse: spouseCore as! String))
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
else {
downloadJsonwithImages()
}
} catch { print(error) }
}
здесь downloadJsonwithImages () покажет вид таблицы в режиме онлайн
Здесьis cellForRowAt
let cell = tableView.dequeueReusableCell(withIdentifier: "JsonCell", for: indexPath) as! JsonTableViewCell
let aData = iteamsArray[indexPath.row]
cell.labelName.text = aData.nameS
cell.labelUsername.text = aData.spouseS
cell.picImageview.setImageFromURl(stringImageUrl: aData.picS!)
//in online getting images in tableview
print("in cell \(aData.picS)")//while offline it contains image data but not getting in tableview
cell.selectionStyle = .none
return cell
для загрузки изображений, которые я использовал, и я также установил модуль sdwebimage в проект
// MARK: - UIImageView
extension UIImageView{
func setImageFromURl(stringImageUrl url: String){
if let url = NSURL(string: url) {
if let data = NSData(contentsOf: url as URL) {
DispatchQueue.main.async {
self.image = UIImage(data: data as Data)
}
}
}
}
}
, пожалуйста, помогите мне отображать изображения в виде таблицы в автономном режиме.