Error: "unable to open database file" & "Too many open files"
Error: "unable to open database file" & "Too many open files"
我已经检查了很多关于 SO 的问题,例如 this & this,与这些错误相关,但让我告诉你我的情况。
我正在视图中加载图像,并且在我的代码 returns 中单击集合视图中的资产 18 次后出现此错误。我没有做任何复杂的事情,我只是添加了在该资产上方的视图中单击的相同资产。
信息:我正在创建资产并将它们保存在文档目录中并仅从那里获取它们。
下面是我的错误代码:
let data = try Data(contentsOf: URL(fileURLWithPath: (contentsOfFile: (userInfo[kPath] as! String))), options: .uncached)
我正在尝试获取 imageData,然后将其作为图像放在图像视图中,但在点击几下后,Try 语句返回以下错误
"Too many open files"
我也试过另一种加载图片的方式,即
UIImage(contentsOfFile: imageFilePath)!
但结果是一样的。
谁能指导我如何解决这个错误?
您与我们共享的代码不太可能是 "too many files open" 问题的根源,而更有可能只是另一个问题的症状。您的另一个错误 "unable to open database file" 表明更有可能是罪魁祸首,例如您可能正在打开数据库但没有正确关闭它们,最终导致打开的文件过多。
我建议仔细检查您打开文件的所有地方,并仔细检查您是否正确关闭了它们。特别是如果您正在执行自己的 sqlite3 API 调用,执行此操作非常容易,因为文件不会自动关闭。我建议在打开和关闭文件的任何地方添加日志记录语句,并确保每个 "open" 都与相应的 "close".
配对
如果文件的打开和关闭发生在 Swift 代码中,您有许多 if
或 guard
语句,通常将 "close" 放在 defer
语句是确保无论执行路径如何都调用关闭的好方法。
顺便说一句,与此文件打开问题无关,代码段中对 contentsOfFile
的引用是 misleading/unnecessary。您可以将其简化为:
let data = try Data(contentsOf: URL(fileURLWithPath: userInfo[kPath] as! String), options: .uncached)
我已经检查了很多关于 SO 的问题,例如 this & this,与这些错误相关,但让我告诉你我的情况。
我正在视图中加载图像,并且在我的代码 returns 中单击集合视图中的资产 18 次后出现此错误。我没有做任何复杂的事情,我只是添加了在该资产上方的视图中单击的相同资产。
信息:我正在创建资产并将它们保存在文档目录中并仅从那里获取它们。
下面是我的错误代码:
let data = try Data(contentsOf: URL(fileURLWithPath: (contentsOfFile: (userInfo[kPath] as! String))), options: .uncached)
我正在尝试获取 imageData,然后将其作为图像放在图像视图中,但在点击几下后,Try 语句返回以下错误
"Too many open files"
我也试过另一种加载图片的方式,即
UIImage(contentsOfFile: imageFilePath)!
但结果是一样的。
谁能指导我如何解决这个错误?
您与我们共享的代码不太可能是 "too many files open" 问题的根源,而更有可能只是另一个问题的症状。您的另一个错误 "unable to open database file" 表明更有可能是罪魁祸首,例如您可能正在打开数据库但没有正确关闭它们,最终导致打开的文件过多。
我建议仔细检查您打开文件的所有地方,并仔细检查您是否正确关闭了它们。特别是如果您正在执行自己的 sqlite3 API 调用,执行此操作非常容易,因为文件不会自动关闭。我建议在打开和关闭文件的任何地方添加日志记录语句,并确保每个 "open" 都与相应的 "close".
配对如果文件的打开和关闭发生在 Swift 代码中,您有许多 if
或 guard
语句,通常将 "close" 放在 defer
语句是确保无论执行路径如何都调用关闭的好方法。
顺便说一句,与此文件打开问题无关,代码段中对 contentsOfFile
的引用是 misleading/unnecessary。您可以将其简化为:
let data = try Data(contentsOf: URL(fileURLWithPath: userInfo[kPath] as! String), options: .uncached)