gpt4 book ai didi

ios - 在 NSUserDefaults 中存储图像以在 tableView 中显示它们时出现问题。 swift

转载 作者:行者123 更新时间:2023-11-28 12:48:22 24 4
gpt4 key购买 nike

我们有一个应用程序,我们试图在其中编写一些行程,将它们保存在 NSUserDefaults 中并在 tableView 中检索它们。为了做到这一点,我们有两个 View Controller 。

思路是这样的

enter image description here

如您所见,在第一个 viewController (programViewController.swift) 中,我们有三个 UITextFields:

目标文本字段、日期文本字段、公司文本字段。

还有一个带有按钮的 UIImageView,用于使用 UIImagePickerViewController 选择照片。

最后,我们有一个名为“programar viaje”或程序旅行的按钮。当我们点击这个时,应用程序将我们所有的字段保存在 NSUserDefaults 中

第二个 ViewController (travelViewController.swift) 有一个 TableView 来显示行程。

好的,我可以保存所有的文本字段, 但我无法在 NSUserDefaults 中正确保存照片并将其显示在 travelViewController.swift 的表中。

我哪里错了伙计们?

导入 UIKit

让 defaults = NSUserDefaults.standardUserDefaults()

**var destinationArray = 字符串

var dateArray = 字符串

var companyArray = 字符串

var pictureArray = UIImage**

类 programViewController:UIViewController、UINavigationControllerDelegate、UIImagePickerControllerDelegate、UITextViewDelegate {

@IBOutlet weak var destinyTextField: UITextField!
@IBOutlet weak var dateTextField: UITextField!
@IBOutlet weak var companyTextField: UITextField!
@IBOutlet weak var companyPicture: UIImageView!





override func viewDidLoad() {
super.viewDidLoad()


}

@IBAction func choosePhoto(sender: AnyObject) {

let picker = UIImagePickerController()
picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
picker.allowsEditing = true
picker.delegate = self

self.presentViewController(picker, animated: true, completion: nil)



}

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {

self.companyPicture.image = image
self.dismissViewControllerAnimated(true, completion: nil)


}

@IBAction func programButton(sender: AnyObject) {

    destinationArray.append(destinyTextField.text!)
dateArray.append(dateTextField.text!)
companyArray.append(companyTextField.text!)
pictureArray.append(companyPicture.image!)


defaults.setObject(destinationArray, forKey: "destinyUD")
defaults.setObject(dateArray, forKey: "dateUD")
defaults.setObject(companyArray, forKey: "companyUD")
defaults.setObject(pictureArray, forKey: "pictureUD")




print("Destinos \(destinationArray), Fechas \(dateArray) , Compañía \(companyArray) , Imágenes \(pictureArray)")

self.performSegueWithIdentifier("programSegue", sender: self)


}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        if segue.identifier == "programSegue" {

if let vc : travelViewController = segue.destinationViewController as? travelViewController {


vc.passedDestination = destinationArray
vc.passedDate = dateArray
vc.passedCompany = companyArray
vc.passedPicture = pictureArray





}


}


}

类 travelViewController:UIViewController、UITableViewDataSource、UITableViewDelegate {

@IBOutlet weak var tableView: UITableView!



var passedDestination = []
var passedDate = []
var passedCompany = []
var passedPicture = []



override func viewDidLoad() {
super.viewDidLoad()

print("Soy viewdidload")

if NSUserDefaults.standardUserDefaults().objectForKey("destinyUD") != nil {

destinationArray = NSUserDefaults.standardUserDefaults().objectForKey("destinyUD") as! [String]

}

if NSUserDefaults.standardUserDefaults().objectForKey("dateUD") != nil {

dateArray = NSUserDefaults.standardUserDefaults().objectForKey("dateUD") as! [String]

}


if NSUserDefaults.standardUserDefaults().objectForKey("companyUD") != nil {

companyArray = NSUserDefaults.standardUserDefaults().objectForKey("companyUD") as! [String]

}



if NSUserDefaults.standardUserDefaults().objectForKey("pictureUD") != nil {

pictureArray = NSUserDefaults.standardUserDefaults().objectForKey("companyUD") as! [UIImage]

}


}

override func viewWillAppear(animated: Bool) {

//print("Soy viewDidAppear")


}

override func viewDidAppear(animated: Bool) {

tableView.reloadData()
print("Estoy recargando la tabla")


}


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

//return fecha.count

return destinationArray.count
}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell : customCell2 = (tableView.dequeueReusableCellWithIdentifier("cell2", forIndexPath: indexPath) as? customCell2)!



cell.cellDestination.text = destinationArray[indexPath.row]
cell.cellDate.text = dateArray[indexPath.row]
cell.cellCompany.text = companyArray[indexPath.row]
cell.cellImage2.image = pictureArray[indexPath.row] as? UIImage




return cell


}

最佳答案

NSUserDefaults 不适用于存储像图像这样的大对象。我建议将您的图像存储到文档目录,然后将图像的路径保存为默认值。

关于ios - 在 NSUserDefaults 中存储图像以在 tableView 中显示它们时出现问题。 swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37335253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com