String {-6ren">
gpt4 book ai didi

ios - Swift 2.0 - "Cannot convert return expression of type ' NSURL' 返回类型 'String' "

转载 作者:可可西里 更新时间:2023-11-01 01:03:04 25 4
gpt4 key购买 nike

我正在尝试将旧的 swift 应用程序转换为 2.0,但似乎无法通过此函数中的这段代码:

func documentsPathForFileName(name: String) -> String {

let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true);

let path = paths[0] ;

let fullPath = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent(name)

return fullPath

}

在“let fullPath”行我收到错误“无法将类型‘NSURL’的返回表达式转换为返回类型‘String’”

这是完整的 .swift 文件:

import UIKit

class CardViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate, UIScrollViewDelegate {

@IBOutlet weak var SecondCaptureButton: UIBarButtonItem!

@IBOutlet weak var imageView: UIImageView!

@IBOutlet weak var OpenButton: UIBarButtonItem!

@IBOutlet weak var MainCaptureButton: UIButton!

var imagePicker: UIImagePickerController!

/* func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
} */


override func shouldAutorotate() -> Bool {
return false
}

override func viewDidLoad() {
super.viewDidLoad()

OpenButton.target = self.revealViewController()
OpenButton.action = Selector("revealToggle:")

self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

MainCaptureButton.layer.borderColor = UIColor.blackColor().CGColor
MainCaptureButton.layer.cornerRadius = 10
MainCaptureButton.layer.borderWidth = 1
MainCaptureButton.titleLabel?.textAlignment = NSTextAlignment.Center

let possibleOldImagePath = NSUserDefaults.standardUserDefaults().objectForKey("path") as! String?

if let oldImagePath = possibleOldImagePath {

let oldFullPath = self.documentsPathForFileName(oldImagePath)

let oldImageData = NSData(contentsOfFile: oldFullPath)

// here is your saved image:

if let oldImage = UIImage(data: oldImageData!) {

imageView.image = oldImage
print("Old Photo Retrieved")

self.view.bringSubviewToFront(imageView)

}

}
}

func documentsPathForFileName(name: String) -> String {

let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true);

let path = paths[0] ;

let fullPath = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent(name)

return fullPath

}

@IBAction func TakePhoto(sender: AnyObject) {
imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .Camera

presentViewController(imagePicker, animated: true, completion: nil)

}

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
imagePicker.dismissViewControllerAnimated(true, completion: nil)
self.view.sendSubviewToBack(MainCaptureButton)
imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage

let imageData = UIImageJPEGRepresentation(imageView.image!, 1)
let relativePath = "image_\(NSDate.timeIntervalSinceReferenceDate()).jpg"
let path = self.documentsPathForFileName(relativePath)

imageData!.writeToFile(path, atomically: true)

NSUserDefaults.standardUserDefaults().setObject(relativePath, forKey: "path")
NSUserDefaults.standardUserDefaults().synchronize()

print("New Photo Saved")


}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()

}

}

最佳答案

您的方法被定义为返回一个字符串:

func documentsPathForFileName(name: String) -> String { ...

但您正在尝试返回一个 NSURL。您可以更改方法签名以返回 NSURL:

func documentsPathForFileName(name: String) -> NSURL { ...

或者您可以返回 URL 的字符串表示形式:

return fullPath.absoluteString

关于ios - Swift 2.0 - "Cannot convert return expression of type ' NSURL' 返回类型 'String' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33713238/

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