我有一个swift项目,它使用一组图片。图片数组保存在filmanager.default.url路径中的存储器中。然后,url保存在sqlite数据库中。我可以毫无问题地添加到数组中,但是,每当我试图从内存中调用它时,就会遇到问题。我不知道是保存错误还是加载错误。我会把我的密码贴在这里。
func save(images: Array<UIImage>, identifier: String) -> Array<String> {
var picCounter = 0
var URLs: Array<String> = []
for pic in images {
let id = identifier + "makeSureThisCantAccidentallyBeAnID" + String(picCounter)
let jpgImageData = pic.jpegData(compressionQuality: 0.5)
let documentURL = fileManager.urls(for: .documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask).first
let path = documentURL!.appendingPathComponent(id + ".png")
do {
try jpgImageData!.write(to: path)
} catch {
print(error)
}
picCounter += 1
URLs.append(path.absoluteString)
}
return URLs
}
这就是我的保存功能。它应该存储url并以字符串格式返回url数组。这是我的加载函数,它应该获取一个url数组并返回图像数组。
func recover(URLarray: Array<String>, identifier: String) -> Array<UIImage> {
if URLarray[0] == "fake url" {
let pic = #imageLiteral(resourceName: "LaunchScreen")
let fakeArray = [pic]
return fakeArray
}
var picCounter = 0
var imageArray: Array<UIImage> = []
for url in URLarray {
//let fileData = FileManager.default.contents(atPath: url)
guard let image = UIImage(contentsOfFile: url) else { return imageArray }
picCounter += 1
imageArray.append(image)
}
return imageArray
}
“#imageliteral”是一个文字图像,如果没有要加载的数组,则使用它来代替数组。从理论上讲,这应该可以在不返回nil的情况下调用每个图像。最后,我将发布我的sqlite保存函数
func saveNote(note: Note) {
connect()
var statement: OpaquePointer? = nil
if sqlite3_prepare_v2(
database,
"UPDATE remember SET person = ?, memories = ?, imageurl = ? WHERE rowid = ?",
-1,
&statement,
nil
) == SQLITE_OK {
sqlite3_bind_text(statement, 1, NSString(string: note.person).utf8String, -1, nil)
sqlite3_bind_text(statement, 2, NSString(string: note.memories).utf8String, -1, nil)
var imageURL: String = ""
for url in note.imageURLs {
imageURL.append(url)
imageURL.append("@")
}
sqlite3_bind_text(statement, 3, NSString(string: imageURL).utf8String, -1, nil)
sqlite3_bind_int(statement, 4, note.id)
if sqlite3_step(statement) != SQLITE_DONE {
print("Error saving note")
}
}
else {
print("Error creating note update statement")
}
sqlite3_finalize(statement)
}
我就是这样想救的。我不得不将一个url数组存储为一个字符串,因此我决定将其设置为一个可以用“@”字符拆分的字符串。如果您认为这是问题所在,请告诉我可以使用什么字符或方法来执行此操作,因为我已尝试更改字符。如果有人能帮我这么多,我非常感激!谢谢您!
暂无答案!
目前还没有任何答案,快来回答吧!