值类型“StartMorgagesViewPage2”没有成员“pdfData2”
问题描述:
我创建了一个名为pdfData变量:值类型“StartMorgagesViewPage2”没有成员“pdfData2”
var pdfData: NSData {
let result = NSMutableData()
UIGraphicsBeginPDFContextToData(result, frame, nil)
guard let context = UIGraphicsGetCurrentContext() else { return result }
UIGraphicsBeginPDFPage()
layer.renderInContext(context)
UIGraphicsEndPDFContext()
return result
}
但后来当我引用它:
self.pdfData.writeToURL(NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!.URLByAppendingPathComponent("Page2.pdf"), atomically: true) // what it is saved as
self.pdfData.writeToFile("Page2.pdf", atomically: false)
我得到两个错误“的价值类型'StartMorgagesViewPage2'没有成员'pdfData2'。这里是我的代码:
import UIKit
class StartMorgagesViewPage2: UIView {
override func didMoveToSuperview() {
var gameTimer = NSTimer!()
gameTimer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "screenshot", userInfo: nil, repeats: false)
/* label.text = "\(instructedbyvalue)"
accountnumberlabel.text = "\(accountnumbersvalue)" //(boo) //"boooooo"
applicantslabel.text = "\(applicantsvalue)"
propertyaddresslabel.text = "\(propertyaddressvalue)"
eircodedetails.text = "\(eircodedetailsvalue)"
*/
//Saving
}
func screenshot() {
print("screenshot")
var pdfData: NSData {
let result = NSMutableData()
UIGraphicsBeginPDFContextToData(result, frame, nil)
guard let context = UIGraphicsGetCurrentContext() else { return result }
UIGraphicsBeginPDFPage()
layer.renderInContext(context)
UIGraphicsEndPDFContext()
return result
}
self.pdfData.writeToURL(NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!.URLByAppendingPathComponent("Page2.pdf"), atomically: true) // what it is saved as
self.pdfData.writeToFile("Page2.pdf", atomically: false)
print(NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!.path!)
}
}
我想不出可能发生的原因。我试过清洗,建立和运行应用程序。
答
的问题是你想你的pdfData
通过使用self
访问 - 但pdfData
不是self
一个实例成员,它只是一个普通的旧变量(尽管计算的一个)。
因此该解决方案是简单地删除self
:
pdfData.writeToFile("Page2.pdf", atomically: false)
你还应该注意的是,你应该更喜欢而该类引用实例成员(属性或方法)时使用self
含蓄,因为它使您的代码更具可读性。例如 - 使用someMethodCall()
而不是self.someMethodCall()
。
将'pdfData'声明移出你的'screenshot'函数 - 或者省略'self'(你通常应该这样做),这取决于你在这里要做什么(不管你想要一个计算出的属性还是不)。 – Hamish
谢谢,当我删除自己。有效 。 @ originaluser2你想发布这个答案吗? –
当然可以!我只是没有开始,因为我不确定你是否想要一个计算的属性或只是一个计算的变量。很高兴我有帮助:) – Hamish