2014-11-22 69 views
0

我对iPhone的编程相当新颖,并且一直在使用几个教程,并且也经常使用这个站点(我必须在这里显示巨大的感激之情,我真的希望我能贡献并帮助他人)。从Parse.com获取数据作为变量

我目前有一个快速的应用程序,它将数据插入到Parse.com中,并且还可以查看它并将其显示在NSLog中。

这是AppDelegate.swift文件中的代码:

Parse.setApplicationId("xxxx", clientKey: "xxxx") 

    var gameScore = PFObject(className: "GameScore") 
    gameScore.setObject(1337, forKey: "score") 
    gameScore.setObject("Sean Plott", forKey: "playerName") 
    gameScore.saveInBackgroundWithBlock { 
     (success: Bool!, error: NSError!) -> Void in 
     if (success ?? false) { 
      NSLog("Object created with id: \(gameScore.objectId)") 

     } else { 
      NSLog("%@", error) 
     } 
    } 

    var query = PFQuery(className: "GameScore") 
    query.getObjectInBackgroundWithId("phNzKk6364") { 

     (scoreAgain: PFObject!, error: NSError!) -> Void in 

     if error == nil { 
      NSLog("No Error: %@", scoreAgain.objectForKey("playerName") as NSString) 

     } else { 
      NSLog("%@", error) 
     } 
    } 

正如你在这行代码看,特定用户的价值已采取并放置在NSLog的。我如何将它分配给一个变量,并将其传递给UILabel。

我已创建的视图控制器的一个实例如下所示:

let vcObj : ViewController = ViewController() 

并试图输出它的NSLog下加入此。

self.vcObj.playerName.text = scoreAgain.objectForKey("playerName") 

但我得到这个错误

fatal error: unexpectedly found nil while unwrapping an Optional value 
(lldb) 

有人可以帮助我从Parse.com得到变量,其分配给一个变量,然后把它传递到ViewController标签?

感谢

+0

如何你'UILabel'产生的?你的'ViewController.swift'文件是什么样的? – vacawama 2014-11-22 21:57:26

+0

@vacawama哈哈嘿再次花花公子。 ViewController包含:IBOutlet var playerName:UILabel! – DannieCoderBoi 2014-11-22 21:59:14

+0

您的IBOutlet是否在Interface Builder中连接?您是否在创建项目时从“单一视图应用程序”模板开始? – vacawama 2014-11-22 22:02:05

回答

0

的问题是,故事板是为您创造一个ViewController,然后你被分配的第二个。你的并不是屏幕上的,并且由于你没有从故事板加载,你的IBOutletnil

Parse.setApplicationId("xxxx", clientKey: "xxxx")保留在AppDelegate.swift中,但将其余的代码移动到viewDidLoadViewController.swift。那么你就可以设置你的标签,因为你的IBOutlet不会是nil

在你ViewController.swift文件:

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet weak var playerName: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     println("viewDidLoad") 
     // Do any additional setup after loading the view, typically from a nib. 

     var gameScore = PFObject(className: "GameScore") 
     gameScore.setObject(1337, forKey: "score") 
     gameScore.setObject("Sean Plott", forKey: "playerName") 
     gameScore.saveInBackgroundWithBlock { 
      (success: Bool!, error: NSError!) -> Void in 
      if (success ?? false) { 
       println("Object created with id: \(gameScore.objectId)") 
      } else { 
       println(error) 
      } 
     } 

     var query = PFQuery(className: "GameScore") 

     query.getObjectInBackgroundWithId("phNzKk6364") { 

      (scoreAgain: PFObject!, error: NSError!) -> Void in 

      if error == nil { 
       println("No Error: " + (scoreAgain.objectForKey("playerName") as String)) 
       self.playerName.text = scoreAgain.objectForKey("playerName") as String 
      } else { 
       println(error) 
      } 
     } 
    } 
}