非常简单的问题 - 如何在Swift中暂时存储图像,字符串和双打?
我的应用程序从服务器获取ID,使用此ID应用程序可以从服务器请求下载图像,然后使用另一个请求可以获取String和Double。 然后app必须显示具有相应String和Double的图像。 应用程序被杀后应删除所有下载的数据,并在应用程序启动后再次下载。
使用自定义类是不是一个好主意?
例如,客户类:
var info = [UserInformation]()
func save() {
//Alamofire functions to download image and string, double values goes here
var newImage = //Downloaded image from server
var newString = //Downloaded String from server
var newDouble = //Downloaded Double from server
//Save image
let imageName = NSUUID().UUIDString
let imagePath = getDocumentsDirectory().stringByAppendingPathComponent(imageName)
if let jpegData = UIImageJPEGRepresentation(newImage, 80) {
jpegData.writeToFile(imagePath, atomically: true)
}
let userInfo = UserInformation(string: newString, double: newDouble, image: imageName)
info.append(userInfo)
}
func load() {
//For ex. I am using [0], although in my app
//it would be for _ in _ loop to access all existing values
let info = UserInformation[0]
string.text = info.string
double.double = info.double
let path = getDocumentsDirectory().stringByAppendingPathComponent(info.image)
imageView.image = UIImage(contentsOfFile: path)
}
func getDocumentsDirectory() -> NSString {
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDirectory = paths[0]
return documentsDirectory
}
然后保存并访问数据:
FBSDKMessageDialog
编辑我意识到使用NSUserData(在我的示例中)是存储数据的可能方式,我不确定这是不是一个好主意,在我的情况下
答案 0 :(得分:1)
你想要什么被命名为“持久数据”。你可以通过很多方法实现这一点: 1.您可以使用第三方库 2.将数据保存在plist文件或CoreData或UserDefaults中。您可以创建包含所需内容的字典,例外情况是UI对象,如UIImage。您可以在NSData中转换UIImage,然后保存NSData。
最简单的方法是保存在NSUserDefaults中。如何执行此操作的示例如下:Save images in NSUserDefaults?
答案 1 :(得分:0)
我个人崇拜Haneke和AwesomeCache。两者都是用Swift编写的。
关于数据持久性的注意事项:
iOS有许多持久性数据存储解决方案,例如:
等
但我怀疑你实际上并不想在更长的时间内存储任何东西。我认为您尝试实现的内容已经是默认的iOS行为。根据您的数据的复杂程度,您可以:
UserInformation
。这将使您的UserInformation
实例持久,直到您的应用程序被杀死。快速查看代码后,第二个选项在您的情况下会更好。