首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从back4app API解码json数据

从back4app API解码json数据
EN

Stack Overflow用户
提问于 2022-11-11 21:34:32
回答 1查看 58关注 0票数 0

我有问题,读取数据从我的back4app API到我的快速项目,我已经连接了我的Back4app应用程序和我的快速project.Imported必要的豆荚。

下面是我如何将我的应用程序连接到我的快速项目

代码语言:javascript
复制
import UIKit
import CoreData
import Parse

@main
class AppDelegate: UIResponder, UIApplicationDelegate {



    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        let configuration = ParseClientConfiguration {
            $0.applicationId = "KwLoFN7Rik2qadAS6dSpnNIv5E0Qd1Uu0nhvO1dt"
            $0.clientKey = "RVNjTMvt5l73jt5GQxsg9GI16CDOiPAbEXiVPTY1"
            $0.server = "https://parseapi.back4app.com"
        }
        Parse.initialize(with: configuration)
        return true
    }

这是我用来解码json data.My json数据的数据模型,它遵循以下结构

代码语言:javascript
复制
import UIKit
struct restaurant: Decodable{
    let objectId: String
    let restaurant: String
    let name: String
    let description: String
    let calories: String
    let price: String
    let ImageUrl: String
    let type: String
    let createdAt: String
    let updatedAt: String
}

struct restaurants: Decodable{
    let restaurants : [restaurant]
}

在viewdidload()方法中,我检查我的快速项目是否成功地连接到我的back4app应用程序,然后尝试使用url检索数据,但是我一直收到一个错误,我不知道是什么

代码语言:javascript
复制
import UIKit
import Parse

class ViewController: UIViewController {
    var restaurantStruct : restaurants? = nil
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        testParseConnection()
        if let url = URL(string:"https://parseapi.back4app.com/classes/restaurants"){
            let session = URLSession.shared
            session.dataTask(with: url) { [self] (data, response, err) in
                guard let jsonData = data else {
                    return
                }
                do {
                    let decoder = JSONDecoder()
                    let artworkList = try decoder.decode(restaurants.self, from: jsonData)
                    self.restaurantStruct = artworkList
                    DispatchQueue.main.async {
                        print(self.restaurantStruct ?? " ")
                    }
                    print(self.restaurantStruct!)
                }
                catch let jsonErr {
                    print("Error decoding JSON", jsonErr)
                }
            }
            .resume()
        }
        
        
        
        func testParseConnection(){
            let myObj = PFObject(className:"FirstClass")
            myObj["message"] = "Hey ! First message from Swift. Parse is now connected"
            myObj.saveInBackground { (success, error) in
                if(success){
                    print("You are connected!")
                }
                else{
                    print("An error has occurred!")
                }
            }
        }
        
        
    }
    
}

这是我在终端上看到的错误。

代码语言:javascript
复制
You are connected!
Error decoding JSON keyNotFound(CodingKeys(stringValue: "restaurants", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"restaurants\", intValue: nil) (\"restaurants\").", underlyingError: nil))

使用解析读取数据

代码语言:javascript
复制
var query = PFQuery(className:"SoccerPlayers")
query.getObjectInBackgroundWithId("HMcTr9rD3s") {
  (soccerPlayers: PFObject?, error: NSError?) -> Void in
  if error == nil && soccerPlayers != nil {
    print(soccerPlayers)
  } else {
    print(error)
  }
}
EN

回答 1

Stack Overflow用户

发布于 2022-11-19 21:05:15

如果收到{“错误”:“未经授权”}之类的错误,则应该使用MasterKey,但这对客户端来说很危险。

您可以使用sessionToken进行授权。但如果你现在还不知道。

可以从仪表板中更改Class级别的权限。您可以在back4app中打开您的应用程序,并打开相关类。公开阅读和公开写作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74408362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档