2014-11-22 108 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) 
      } 
     } 
    } 
}