gpt4 book ai didi

arrays - 在 Swift 中从 ImagePickerControllerImageURL 保存并附加 UserDefaults 中的数组

转载 作者:行者123 更新时间:2023-11-30 11:53:03 25 4
gpt4 key购买 nike

我在从 UIImagePickerControllerImageURL 保存和检索 UserDefaults 中的数组时遇到问题。同步后我可以获取数组,但无法检索它。 myArray 为空。

testImage.image 确实获取了图像,没有问题。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let imageURL: URL = info[UIImagePickerControllerImageURL] as! URL

//test that imagepicker is actually getting the image
let imageData: NSData = try! NSData(contentsOf: imageURL)
let cvImage = UIImage(data:imageData as Data)
testImage.image = cvImage

//Save array to UserDefaults and add picked image url to the array
let usD = UserDefaults.standard
var array: NSMutableArray = []
usD.set(array, forKey: "WeatherArray")
array.add(imageURL)
usD.synchronize()
print ("array is \(array)")

let myArray = usD.stringArray(forKey:"WeatherArray") ?? [String]()
print ("myArray is \(myArray)")

picker.dismiss(animated: true, completion: nil)
}

最佳答案

这里有很多问题。

  1. 不要使用NSData,使用Data
  2. 不要使用 NSMutableArray,使用 Swift 数组。
  3. 您可以直接从info字典获取UIImage
  4. 您无法在 UserDefaults 中存储网址。
  5. 在使用新 URL 更新数组之前,请将 array 保存到 UserDefaults
  6. 您创建一个新数组,而不是从 UserDefaults 获取当前数组。
  7. 您不必调用synchronize
  8. 您无需为大多数变量指定类型。

以下是更新的代码,用于解决所有这些问题:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
testImage.image = image
}

if let imageURL = info[UIImagePickerControllerImageURL] as? URL {
//Save array to UserDefaults and add picked image url to the array
let usD = UserDefaults.standard
var urls = usD.stringArray(forKey: "WeatherArray") ?? []
urls.append(imageURL.absoluteString)
usD.set(urls, forKey: "WeatherArray")
}

picker.dismiss(animated: true, completion: nil)
}

请注意,这会保存代表每个 URL 的字符串数组。稍后,当您访问这些字符串时,如果您需要 URL,则需要使用 URL(string: arrayElement)

关于arrays - 在 Swift 中从 ImagePickerControllerImageURL 保存并附加 UserDefaults 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48142238/

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