ios - 如何使用 Swift 2.0 在 Parse.com (REST API) 中上传图像并将其与用户关联

标签 ios json swift rest parse-platform

我正在尝试使用 REST API 将图像或文件与 Parse.com 中的对象相关联。 Parse.com REST API Doc比较模糊,先说怎么上传哪个好,再说怎么关联。唯一的问题是它没有显示如何与 User table 关联,仅显示 Object table,所以当我尝试与用户关联时,它要求一个用户名和密码,响应就好像它试图创建一个新的用户。当我尝试与常规表 Company 关联时,它会创建一个新条目。欢迎任何帮助,这是我到目前为止的代码。

这是使用 REST 将文件上传到 Parse.com 的代码

    let baseURL = NSURL(string: self.baseURL)
    let url = NSURL(string: "/1/files/pic.jpg", relativeToURL: baseURL)

    let request = NSMutableURLRequest()
    request.HTTPMethod = "\(HTTPMethod.POST)"
    request.addValue(appID, forHTTPHeaderField:  "X-Parse-Application-Id")
    request.addValue(apiKey, forHTTPHeaderField: "X-Parse-REST-API-Key")
    request.addValue("image/jpeg", forHTTPHeaderField: "Content-Type")

    let image = UIImage(named: "empAvatar")

    let imageData = UIImageJPEGRepresentation(image!, 0.9)
    let base64String = imageData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))

    let param = ["userProfile":base64String]

    do{
        request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(param, options: .PrettyPrinted)
    } catch {
        print("ERROR: HTTP Body JSON")
    }

    request.URL = url
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithRequest(request) {
        data, response, error in
        do {
            let imageDic = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as! [String:AnyObject]
            print("DATA: \(imageDic)")
        } catch {

        }
    }
    task.resume()

这是将文件与用户/对象相关联的代码

let baseURL = NSURL(string: self.baseURL)
    let url = NSURL(string: "/1/users/", relativeToURL: baseURL)

    let request = NSMutableURLRequest()
    request.HTTPMethod = "\(HTTPMethod.POST)"
    request.addValue(appID, forHTTPHeaderField:  "X-Parse-Application-Id")
    request.addValue(apiKey, forHTTPHeaderField: "X-Parse-REST-API-Key")
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")


   let param = ["name":"John", "picture":["name":"tfss-127e50c4-be6e-4228-b1a3-3f253358ac-pic.jpg","__type":"File"]]


    do{
        request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(param, options: .PrettyPrinted)
    } catch {
        print("ERROR: HTTP Body JSON")
    }

    request.URL = url
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithRequest(request) {
        data, response, error in
        do {
            let imageDic = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as! [String:AnyObject]
            print("DATA: \(imageDic)")
        } catch {

        }
    }
    task.resume()

有了网址,我也试过了:

 let url = NSURL(string: "/1/class/Company/", relativeToURL: baseURL)

它刚刚创建了一个新条目。

谢谢!

最佳答案

POST 请求将尝试使用 PUT 方法创建新条目。

关于ios - 如何使用 Swift 2.0 在 Parse.com (REST API) 中上传图像并将其与用户关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34332937/

相关文章:

mysql - 我需要使用mysql中json数据列的索引

ios - Playground 和 iOS 设备/模拟器之间的坐标系似乎不匹配

ios - 如何比较两个日期类型的操作数?在 Swift 中对数组进行排序?

C# Montouch/Xamarin - 相机快门速度

ios - Swift 中的卷积 CIFilter

ios - UserDefaults 数组返回为空

sql - 使用 JSON_MODIFY 将多个对象附加到现有数组中

ios - 全局变量在匿名方法中不存储任何数据

swift - 在随机位置生成 SKSprite

swift - 循环遍历 Swift 结构以获取键和值