- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
使用 Swift
我尝试从 URL 下载 JPG
然后将该图像保存到文件,但是当我尝试将它保存到不同的目录时它惯于。它将下载到应用程序的 Documents
文件夹,但当我尝试将路径设置为另一个子文件夹时不会。
let dir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0].stringByAppendingPathComponent("SubDirectory") as String
let filepath = dir.stringByAppendingPathComponent("test.jpg")
UIImagePNGRepresentation(UIImage(data: data)).writeToFile(filepath, atomically: true)
当我运行它时,它没有保存图像吗?为什么会这样?我需要事先创建子文件夹吗?
最佳答案
几个想法:
子目录文件夹是否已经存在?如果没有,您必须先创建它。现在建议使用 NSURL
而不是路径字符串。这样就产生了:
let filename = "test.jpg"
let subfolder = "SubDirectory"
do {
let fileManager = NSFileManager.defaultManager()
let documentsURL = try fileManager.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false)
let folderURL = documentsURL.URLByAppendingPathComponent(subfolder)
if !folderURL.checkPromisedItemIsReachableAndReturnError(nil) {
try fileManager.createDirectoryAtURL(folderURL, withIntermediateDirectories: true, attributes: nil)
}
let fileURL = folderURL.URLByAppendingPathComponent(filename)
try imageData.writeToURL(fileURL, options: .AtomicWrite)
} catch {
print(error)
}
我建议不要将 NSData
转换为 UIImage
,然后再将其转换回 NSData
。如果需要,您可以直接编写原始的 NSData
对象。
通过 UIImage
往返的过程可能会丢失质量和/或元数据,可能会使生成的 Assets 更大等。通常应该使用原始的 NSData
在可能的情况下。
关于iOS:UIImagePNGRepresentation().writeToFile 未写入预期目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042875/
我有一些代码将一些 PDFDocument 对象写入用户选择的目的地。这很好用。 也许其中一些文件(由用户选择)可能非常大(可能数百兆字节),现在我想知道是否有可能取消当前的 writeToFile:
我在我的代码中使用 NSDictionary 的 writeToFile 属性,我正在尝试将字典更新到文档目录,如下所示, NSDictionary *revisionDict = [NSDictio
func fetchFromInternet(){ let i = Int(DISPATCH_QUEUE_PRIORITY_HIGH.value) let que = dispatch
我有以下代码: NSString *errorStr = nil; NSData *plistData = [NSPropertyListSerialization dataFromPropertyL
我正在将一些数据写入我的文档目录,我想知道是否有一种方法可以判断我的 writeToFile 方法何时完成以及我正在创建的文件是否已完全创建。提前致谢 这是我正在调用的方法 我只是在寻找一种方法,无论
我不明白为什么它总是失败。它返回NO。我整个下午都在搜索这个问题,但没有任何解释为什么或如何解决。调用 [[NSFileManager defaultManager] isWritableFileAt
我有一个正在更改的 plist: NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.pl
每次我使用相机拍照,然后保存时,图像总是横向的。这意味着我的 Xib 中的 UIImageView 是错误的。它的肖像 - 这就是我想要和期望的。我可以通过将图像旋转 90 度来纠正此问题,但即使如此
我试图将一个数组(其中包含一些字典)保存到 plist 文件中,但失败了。我没有收到任何错误。我在代码中使用另一个数组执行了与上面完全相同的几行,并且有效。.我不明白为什么它不保存文件。 这是我保存文
只要方法调用发生在同一应用程序运行时,似乎 writeToFile 方法就会附加到当前存在的文件路径。这是真的? 是否有任何其他方法可以确保在应用程序 session 运行时附加到现有文件?我希望在新
我正在尝试用 swift 将内容写入文件 let jsonResult = try! NSJSONSerialization.JSONObjectWithData(response.data, o
在我的 iPhone 应用程序中,我正在从网络上下载一些图像。它是否阻塞 UI 线程并不重要,事实上它需要阻塞 UI 线程直到完全下载。完成后,我通知 UI 唤醒并显示它们。 我的(简化的)代码是这样
我正在将我的 UITextView 文本保存到文件 test.txt 中 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocument
// directoryPath is a URL from another VC @IBAction func saveButtonTapped(sender: AnyObject) {
我目前正在编写一个简单的 IOS 应用程序,它将任务保存到表中。我想扩展该应用程序并允许人们与其他人共享“列表”。在将其保存到 XML 或 URL 之前,我想使用 writeToFile:atomic
我已成功使用 Plist 在我的 iPhone 应用程序中读取和写入数据。 Plist 由数组中的字典组成。当我想附加字典时,我使用 writeToFile 方法。这很有效,但它会覆盖整个 Plist
每次按下保存按钮时,我都会尝试将图像保存到磁盘。这是我正在使用的代码: NSArray* documentDirectories = NSSearchPathForDirectoriesInDomai
我使用有效的字典运行以下代码,但仍然“未写入”: NSFileManager* fm = [[NSFileManager alloc] init]; __autoreleasing NSError
我将新收到的 PDF 文档的缩略图呈现到文档目录中。 我正在使用以下代码: CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundl
ios 声称文件已写入,但更改从未实际保存,就好像它们保留在缓冲区中一样。我需要冲洗什么的吗? - (void)viewDidLoad { [super viewDidLoad]; N
我是一名优秀的程序员,十分优秀!