如何在if和else中创建变量如果成为全局变量?

时间:2015-06-30 04:45:10

标签: swift if-statement uicollectionview global-variables

我有集合视图,但目前仍然使用某些字符串的变量:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    var urlku = NSURL(string: "http://json.comli.com/example.json")
    var data = NSData(contentsOfURL: urlku!)
    if let json: NSDictionary = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers, error: nil) as? NSDictionary {
        if let dict = json as? [String: AnyObject] {
            println(dict)
            if let weatherDictionary = dict["data"]! as? [AnyObject] {
                println("\nWeather dictionary:\n\n\(weatherDictionary)")
                if let descriptionString = weatherDictionary[0]["challengeName"]! as? String {
                    println("\nDescription of the weather is: \(descriptionString)")
                    var judul1 = "\(descriptionString)"
                }else if let descriptionString1 = weatherDictionary[1]["challengeName"]! as? String {
                    println("\nDescription of the weather is: \(descriptionString1)")
                    var judul2 = "\(descriptionString1)"
                }else if let descriptionString2 = weatherDictionary[1]["currentPhaseName"]! as? String {
                    println("\nDescription of the weather is: \(descriptionString2)")
                    var judul3 = "\(descriptionString2)"
                }else if let descriptionString3 = weatherDictionary[1]["currentPhaseRemainingTime"]! as? String {
                    println("\nDescription of the weather is: \(descriptionString3)")
                    var judul4 = "\(descriptionString3)"
                }else if let descriptionString4 = weatherDictionary[0]["challengeType"]! as? String {
                    println("\nDescription of the weather is: \(descriptionString4)")
                    var judul5 = "\(descriptionString4)"
                }else if let descriptionString5 = weatherDictionary[0]["challengeId"]! as? String {
                    println("\nDescription of the weather is: \(descriptionString5)")
                    var judul6 = "\(descriptionString5)"
                }else if let descriptionString6 = weatherDictionary[1]["currentStatus"]! as? String {
                    println("\nDescription of the weather is: \(descriptionString6)")
                    var judul7 = "\(descriptionString6)"
                }
            }
        }
    }
    var names: [String] = ["Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor", "Lorem ipsum dolor sit er elit lamet, Lorem ipsum dolor"]
    // Create the cell and return the cell
    var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! ImageUICollectionViewCell

    // Add image to cell
    cell.image.image = model.images[indexPath.row]
    cell.labelku.text = names[indexPath.row]
    cell.labelku.backgroundColor = UIColor(white: 0.5, alpha: 0.5)
    return cell
}

我想要做的是让var名称变为:

var names: [String] = ["\(judul1)", "\(judul2)", "\(judul3)", "\(judul4)", "\(judul5)", "\(judul6)", "\(judul7)"]

如果judul7不能创建成为全局变量,则会产生错误“使用未解析的标识符”,因此我需要使judul1成为全局变量。

如何创建judul1到judul7成为全局变量?

问候。

1 个答案:

答案 0 :(得分:0)

您不能将函数变量用作全局变量,因为它们仅受该函数的限制,但您可以通过在类声明之上声明它来全局创建变量,如下所示:

import UIKit

var judul1 = ""
var judul7 = ""

class ViewController: UIViewController {
    //Your code
}

现在,这将使judul1judul7全局,现在您可以在cellForItemAtIndexPath方法中将值分配给:

judul1 = "\(descriptionString)"
judul7 = "\(descriptionString6)"

您可以在项目的任何位置访问它。

另一种方法是您可以使用NSUserDefaults将这两个变量存储到磁盘中,如下所示cellForItemAtIndexPath方法:

judul1

if let descriptionString = weatherDictionary[0]["challengeName"]! as? String {
    println("\nDescription of the weather is: \(descriptionString)")
    var judul1 = "\(descriptionString)"
    NSUserDefaults.standardUserDefaults().setObject(judul1, forKey: "judul1")
}

judul7

else if let descriptionString6 = weatherDictionary[1]["currentStatus"]! as? String {
    println("\nDescription of the weather is: \(descriptionString6)")
    var judul7 = "\(descriptionString6)"
    NSUserDefaults.standardUserDefaults().setObject(judul7, forKey: "judul7")
}

之后,你可以在任何地方访问它:

let judul1: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("judul1")
let judul7: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("judul7")

希望它会对你有所帮助。