值类型“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!) 




    } 




} 

下面是错误的图片:my errors

我想不出可能发生的原因。我试过清洗,建立和运行应用程序。

+1

将'pdfData'声明移出你的'screenshot'函数 - 或者省略'self'(你通常应该这样做),这取决于你在这里要做什么(不管你想要一个计算出的属性还是不)。 – Hamish

+0

谢谢,当我删除自己。有效 。 @ originaluser2你想发布这个答案吗? –

+0

当然可以!我只是没有开始,因为我不确定你是否想要一个计算的属性或只是一个计算的变量。很高兴我有帮助:) – Hamish

的问题是你想你的pdfData通过使用self访问 - 但pdfData不是self一个实例成员,它只是一个普通的旧变量(尽管计算的一个)。

因此该解决方案是简单地删除self

pdfData.writeToFile("Page2.pdf", atomically: false) 

你还应该注意的是,你应该更喜欢而该类引用实例成员(属性或方法)时使用self含蓄,因为它使您的代码更具可读性。例如 - 使用someMethodCall()而不是self.someMethodCall()