gpt4 book ai didi

ios - 无法使用类型为“(String, withIntermediateDirectories : B) 的参数列表调用 'createDirectoryAtPath'

转载 作者:行者123 更新时间:2023-11-28 13:05:22 26 4
gpt4 key购买 nike

我正在为 sqlite 数据库使用 SwiftData 框架。当我将 Xcode 表单 6.4 更新为 7.0.1 时,swift data.swift 文件显示此错误 Cannot invoke 'createDirectoryAtPath' with an argument list of type '(String, withIntermediateDirectories: Bool, attributes: NilLiteralConvertible, error: NilLiteralConvertible) '。我提供了以下代码。

public static func saveUIImage(image: UIImage) -> String? {

let docsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
let imageDirPath = docsPath.stringByAppendingPathComponent("SwiftDataImages")
if !NSFileManager.defaultManager().fileExistsAtPath(imageDirPath) {
if !NSFileManager.defaultManager().createDirectoryAtPath(imageDirPath, withIntermediateDirectories: false, attributes: nil, error: nil) {
print("Error creating SwiftData image folder")
return nil
}
}
let imageID = NSUUID().UUIDString
let imagePath = imageDirPath.stringByAppendingPathComponent(imageID)
let imageAsData = UIImagePNGRepresentation(image)
if !imageAsData!.writeToFile(imagePath, atomically: true) {
print("Error saving image")
return nil
}
return imageID

}

最佳答案

createDirectoryAtPath 语法更改如下:

- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(nullable NSDictionary<NSString *, id> *)attributes error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

所以你可以像这样更新你的代码:

NSFileManager.defaultManager().createDirectoryAtPath(imageDirPath, withIntermediateDirectories: false, attributes: [:])

然后您使用 swift 2.0 完成代码:

func saveUIImage(image: UIImage) -> String? {

let docsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
let imageDirPath = (docsPath as NSString).stringByAppendingPathComponent("SwiftDataImages")
if !NSFileManager.defaultManager().fileExistsAtPath(imageDirPath) {

do{
try NSFileManager.defaultManager().createDirectoryAtPath(imageDirPath, withIntermediateDirectories: false, attributes: [:])
} catch {
print("Error creating SwiftData image folder")
return nil
}
}
let imageID = NSUUID().UUIDString
let imagePath = (imageDirPath as NSString).stringByAppendingPathComponent(imageID)
let imageAsData = UIImagePNGRepresentation(image)
if !imageAsData!.writeToFile(imagePath, atomically: true) {
print("Error saving image")
return nil
}
return imageID
}

或者您可以使用 stringByAppendingPathComponent 的扩展,因为在 2.0 中它不适用于 String

extension String {

func stringByAppendingPathComponent(path: String) -> String {

let nsSt = self as NSString

return nsSt.stringByAppendingPathComponent(path)
}
}

你可以这样使用它:

let imageDirPath = docsPath.stringByAppendingPathComponent("SwiftDataImages")
let imagePath = imageDirPath.stringByAppendingPathComponent(imageID)

关于ios - 无法使用类型为“(String, withIntermediateDirectories : B) 的参数列表调用 'createDirectoryAtPath',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32986455/

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