답변:
stringByAppendingPathComponent
Swift 2.0에서 메소드 가 제거 된 것처럼 보이 므로 오류 메시지에서 제안하는 것은 다음을 사용하는 것입니다.
let writePath = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent("instagram.igo")
최신 정보:
URLByAppendingPathComponent()
appendingPathComponent()
대신 다음과 같이 대체되었습니다 .
let writePath = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("instagram.igo")
stringByAppendingPathComponent
. 아래 답변을 참조하십시오.
NSURL
방법이 아니라NSString
stringByAppendingPathComponent
Swift 2.0에서 제거되었습니다 "라는 말이 맞지 않다는 것을 의미 하며 @Maysam은 NSURL
방법 만을 요구하지 않았습니다 .
작동 NSString
하므로 다음과 같이 사용할 수 있습니다.
extension String {
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.stringByAppendingPathComponent(path)
}
}
이제이 확장을 사용 String
하여 NSString
먼저 변환 하고 작업을 수행 할 수 있습니다.
코드는 다음과 같습니다.
let writePath = NSTemporaryDirectory().stringByAppendingPathComponent("instagram.igo")
사용할 다른 방법은 다음과 같습니다.
extension String {
var lastPathComponent: String {
return (self as NSString).lastPathComponent
}
var pathExtension: String {
return (self as NSString).pathExtension
}
var stringByDeletingLastPathComponent: String {
return (self as NSString).stringByDeletingLastPathComponent
}
var stringByDeletingPathExtension: String {
return (self as NSString).stringByDeletingPathExtension
}
var pathComponents: [String] {
return (self as NSString).pathComponents
}
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.stringByAppendingPathComponent(path)
}
func stringByAppendingPathExtension(ext: String) -> String? {
let nsSt = self as NSString
return nsSt.stringByAppendingPathExtension(ext)
}
}
여기 에서 참조하십시오 .
스위프트 3.0 :
extension String {
func stringByAppendingPathComponent1(path: String) -> String {
let nsSt = self as NSString
return nsSt.appendingPathComponent(path)
}
}
let writePath = NSTemporaryDirectory().stringByAppendingPathComponent(path: "instagram.igo")
extension String {
var lastPathComponent: String {
return (self as NSString).lastPathComponent
}
var pathExtension: String {
return (self as NSString).pathExtension
}
var stringByDeletingLastPathComponent: String {
return (self as NSString).deletingLastPathComponent
}
var stringByDeletingPathExtension: String {
return (self as NSString).deletingPathExtension
}
var pathComponents: [String] {
return (self as NSString).pathComponents
}
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.appendingPathComponent(path)
}
func stringByAppendingPathExtension(ext: String) -> String? {
let nsSt = self as NSString
return nsSt.appendingPathExtension(ext)
}
}
NSURL
가 있습니다. 자원을 찾기위한 경로를 사용하는 것이 더 이상 사용되지 않으므로 대신 사용해야합니다. 그냥 말하면
checkResourceIsReachable()
나 checkPromisedItemIsReachable()
에 URL
대신. FileManager
여전히 Swift에 NSFileManager
대해 NS
접두사가 제거 된 ObjC 클래스 이며 fileExistsAtPath
OS X 10.0 이후로 사용되었습니다. 그 이후 세계는 진화했으며 앱이 샌드 박스 처리되어 있기 때문에 (iOS에서는 덜 분명함) 파일이 존재할 수 있으며 파일을 볼 권한이 없을 수도 있습니다. 또한 파일이 클라우드 등에있을 수 있습니다. 따라서 간단한 BOOL
방법이보다 복잡한 방법으로 대체 URL
되지만 의미 론적으로 올바른 이유 입니다.
에 대한 스위프트 3 :
let writePath = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(directoryname).path
또는이 확장을 더 잘 만드십시오.
extension String {
func appendingPathComponent(_ string: String) -> String {
return URL(fileURLWithPath: self).appendingPathComponent(string).path
}
}
용법:
let writePath = NSTemporaryDirectory().appendingPathComponent(directoryname)
스위프트 3 솔루션 :
다음은 문서 디렉토리 경로를 얻는 함수입니다.
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in:.userDomainMask)
let documentsDirectory = paths[0]
return documentsDirectory
}
사용하는 방법:
getDocumentsDirectory.appendingPathComponent("google.com")
결과:
file:///var/folders/w1/3rcp2fvs1qv43hfsh5876s0h0000gn/T/com.apple.dt.Xcode.pg/containers/com.apple.dt.playground.stub.iOS_Simulator.MyPlayground-7CF9F706-509C-4D4C-997E-AB8FE9E4A6EA/Documents/google.com
스위프트 2.0
// Get the documents Directory
func documentsDirectory() -> String {
let documentsFolderPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
return documentsFolderPath
}
// Get path for a file in the directory
func fileInDocumentsDirectory(filename: String) -> String {
let writePath = (documentsDirectory() as NSString).stringByAppendingPathComponent("Mobile")
if (!NSFileManager.defaultManager().fileExistsAtPath(writePath)) {
do {
try NSFileManager.defaultManager().createDirectoryAtPath(writePath, withIntermediateDirectories: false, attributes: nil) }
catch let error as NSError {
print(error.localizedDescription);
}
}
return (writePath as NSString).stringByAppendingPathComponent(filename)
}
//# MARK: - Save Image in Doc dir
func saveImage (image: UIImage, path: String ) -> Bool{
let pngImageData = UIImagePNGRepresentation(image)
// let jpgImageData = UIImageJPEGRepresentation(image, 1.0) // if you want to save as JPEG
let result = pngImageData!.writeToFile(path, atomically: true)
print("\(result)")
print("\(path)")
return result
}
대신 URLByAppendingPathComponent ()를 사용할 수 있습니다. “file : //”접두사를 제거하려면 경로 문자열을 잘라야합니다.
let uniqueFileName = NSUUID().UUIDString
let documentsDirectory = getDocumentsDirectoryURL()
if let path = documentsDirectory?.URLByAppendingPathComponent(uniqueFileName) {
var pathString = path.absoluteString
pathString = imagePathString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "file://"))
}
func getDocumentsDirectoryURL() -> NSURL? {
let fileManager = NSFileManager()
if let docsDirectory = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first {
return docsDirectory
}
return nil
}
스위프트 4
extension String {
var lastPathComponent: String {
return (self as NSString).lastPathComponent
}
var pathExtension: String {
return (self as NSString).pathExtension
}
var stringByDeletingLastPathComponent: String {
return (self as NSString).deletingLastPathComponent
}
var stringByDeletingPathExtension: String {
return (self as NSString).deletingPathExtension
}
var pathComponents: [String] {
return (self as NSString).pathComponents
}
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.appendingPathComponent(path)
}
func stringByAppendingPathExtension(ext: String) -> String? {
let nsSt = self as NSString
return nsSt.appendingPathExtension(ext)
}
}
Application%20Support