【问题标题】:SwiftyJson doesn't work?SwiftyJson 不起作用?
【发布时间】:2016-01-01 22:34:16
【问题描述】:

我正在尝试从我自己创建的网站上获取信息,我需要读取一个 JSON 对象以将其数据导入我的 iOS 应用程序(用 Swift 编写)。我只能找到很少的关于如何做到这一点的教程,其中大部分使用的是 SWIFTYJson 库 (https://github.com/SwiftyJSON/SwiftyJSON)。问题是当我使用库时,实际的库代码本身似乎有一些错误,可能是由于 Xcode 最近的更新。甚至教程中的示例也不起作用。

在不使用 SwiftyJson 的情况下,有没有不同的方法来解决这个问题?

谢谢

这是我下载的实际 SwiftyJson 文件。现在在他自己的示例中,代码似乎有一些错误。

【问题讨论】:

  • 您需要什么帮助?从服务器获取 JSON 还是解析生成的 JSON?
  • 您可以发布一些示例代码或发布您遇到的错误吗?
  • @Anchor 我发布了图片,您可以看到我下载的文件中有编码错误。我真的没有足够的知识来自己解决编码问题,我现在正在寻找另一种方法来从具有 json 文件的网站上获取信息
  • 你有什么版本的 Xcode?​​span>
  • 目前使用 6.3 @SebastianOsiński 你认为我需要新的吗?

标签: ios json swift swifty-json


【解决方案1】:

正如您在评论中所说,您使用的是 Xcode 6.3,这就是 SwiftyJSON 无法正常工作的原因。您已经下载了与 Swift 2.1 兼容的最新版本的库,如果我没记错的话,Xcode 6.3 与 Swift 1.2 捆绑在一起。您应该始终使用可用的最新版本的 Xcode(不包括 beta 版本)。 Xcode 的版本也会影响您拥有的 Swift 版本。由于 Swift 是一种年轻的语言,它面临着许多版本之间的变化,这些变化会触发用 Swift 编写的框架的变化。

【讨论】:

    【解决方案2】:

    我可以看到“No type named Indexable...”的第一个错误似乎是 reported in the SwiftyJSON project few months ago,解决方法是使用 Xcode 7 进行构建。

    我还看到您使用的是 iOS SDK 8.3,它可能会更新到 9.2 并解决问题。如果您使用 Xcode 6,请尝试更新到 Xcode 7,错误可能会得到修复。如果有新的 SDK 版本可用,我也看不出有任何理由使用旧的 SDK 版本。

    【讨论】:

      【解决方案3】:

      尝试在没有项目的情况下导入 SwiftyJSON 文件,如下所示。

      如果你想像你的版本一样使用:

      尝试创建一个新的swift 文件并手动导入这个swiftyJSON version。 (不是最新的)这应该适用于 xcode 7.2Swift 2deployment target 8.0.

      https://gist.github.com/fatihyildizhan/450822246e8deb14099c

      要求 iOS 7.0+ / Mac OS X 10.9+, Xcode 7

      【讨论】:

        【解决方案4】:

        别忘了导入AlamofireSwiftyJSON

         // This is Alamofire Request
          func LoginWithAPI(completion : (String) -> ()) {
            Alamofire.request(.POST, "your_api_url", parameters: ["username":"bodrum", "password":"yalikavak"], encoding: ParameterEncoding.JSON)
              .validate()
              .responseJSON { response in
                switch response.result {
                case .Success:
                  // Parse your result to JSON object first.
                  // JSON is SwiftyJSON object.
                  let jsonResponse = JSON(data: response.data!)
                  let result = jsonResponse["result"].stringValue
                  completion(result)
                case .Failure(let error):
                  completion(error.description)
                }
            }
          }
        

        如果您想添加任何header,请使用此行:

        Alamofire.request(.POST, "your_api_url", parameters: ["username":"bodrum", "password":"yalikavak"], encoding: ParameterEncoding.JSON,
          headers: ["header_key": "header_value"])
        

        【讨论】:

        • 好吧,我真的不需要导入 swiftyjson,因为我实际上将文件放在了我的项目中。问题是图书馆本身似乎有错误。你知道有什么其他方法可以解决这个问题吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多