json - Swift 将创建的结构实例返回给函数

标签 json swift struct nsarray instance

//在文件中:Struct.swift 是我定义结构布局的地方。

struct coin 
{
    var coinYear        = String("")
    var userID          = String("")
    var coinSellCoinID  = String("")
    var coinImageURL    = String("")
    var mintYear        = String("")
    var about           = String("")
    var allowBarter     = String("")
}

/*

  1. 在文件 FirstViewController.swift 中,我从输入框中获取硬币 ID 值,然后处理按钮单击并构建 URL 字符串。

  2. 然后,我将该 URL 发送到 fetchCoinJSON 函数以获取 JSON 文本

*/

@IBAction func btnSubmitCoinID(sender: AnyObject)
{
    let temp = coinID.text
    let theCoinURL = NSURL(string: MyVariables.url + "getCoinInfo.php?coinID=" + temp)
    fetchCoinJSON(theCoinURL!)
}

//file: fetchJson.swift 通过 URL 获取 JSON 字符串,然后我获取 JSON 字符串并将该字符串传递给 parseCoinJson 函数。

       func fetchCoinJSON(theurl: NSURL)
        {
            var error: NSError?

var notWorking = coin()

MyVariables.rawCoinJSON =

NSString(contentsOfURL: theurl, encoding: NSUTF8StringEncoding, error: &error)!

var data: NSData =
MyVariables.rawCoinJSON.dataUsingEncoding(NSUTF8StringEncoding)!

    let anyObj: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error)
            println("Error: \(error)")

    notWorking = parseCoinJson(anyObj!) <--- var notWorking = nil
            NSLog("OoOoOoOoOoOoOoO")
            println(notWorking.coinWeight) <--- logs null
        }

//file ParseJSON.swift 这里我解析JSON并设置相应的结构值。使用 NSLog 我知道 c.CoinYear 确实包含正确的值以及所有其他值。然而

返回c

给出错误:ParseJSON.swift:95:16:“coin”无法转换为“()”

    func parseCoinJson(anyObj:AnyObject)
    {
        if  anyObj is Array<AnyObject>
        {
            var c = coin()
            for json in anyObj as! Array<AnyObject>
            {
                c.userID = (json["userid"] as AnyObject? as? String) ?? String("") ?? String ("")
                c.mintYear = (json["mintyear"] as AnyObject? as? String) ?? String("") ?? String ("")
                c.coinActiveStatus = (json["isActive"] as AnyObject? as? String) ?? String("") ?? String ("")
                c.coinSellCoinID = (json["sellcoinid"] as AnyObject? as? String) ?? String("") ?? String ("")
                c.coinImageURL = (json["coinImageURL"] as AnyObject? as? String) ?? String("") ?? String ("")
                c.about = (json["about"] as  AnyObject? as? String) ?? String("") ?? String ("")
                c.allowBarter = (json["allowBarter"] as  AnyObject? as? String) ?? String("") ?? String ("")

....

    }
            return c
        }
    }

最佳答案

func parseCoinJson(anyObj:AnyObject)

该函数返回Void,即()。然后您返回硬币。您的意思是您的功能是:

func parseCoinJson(anyObj:AnyObject) -> Coin

请注意,类型应始终以大写字母开头。所以这应该是struct Coin

关于json - Swift 将创建的结构实例返回给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29760910/

相关文章:

java - 将 Decimal128 序列化为 JSON

ios - 引用由另一个函数创建的数组

c# - 如何在 C# 中处理来自 C DLL 文件的复杂结构返回类型?

javascript - JavaScript 中的结构体数组

c++ - 从 struct children 中调用的函数

javascript - Mailchimp 通过 jQuery Ajax。提交正确,但 JSON 响应作为单独的页面返回

java - Android:我想从 google map api 以 json 格式提取地址

javascript - 如何将 .json 文件作为参数导入 .js 文件并使用命令行启动它?

swift - 从 UIImagePickerController 获取 NSURL

swiftyjson - 调用可以抛出,但它被标记为 'try' 并且错误未被处理