如何进行 Parse.com 云代码调用?

Posted

技术标签:

【中文标题】如何进行 Parse.com 云代码调用?【英文标题】:How to make this Parse.com cloud code call? 【发布时间】:2014-06-03 09:01:45 【问题描述】:

注意:

以下是 Parse 的 CA 对此的一些想法:

https://www.parse.com/questions/ios-when-will-swift-for-parse-be-ready

(请注意这个问题的受欢迎程度 - 热门话题)。希望它可以帮助某人


这是一个 iOS7 Parse 云代码调用...

如何在 SWIFT 中做到这一点?干杯

明确一点...你可以在 SWIFT 中使用“callFunctionInBackground”,还是只需要调用一个 objc 类?

-(void)tableView:(UITableView *)tableView
        commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
        forRowAtIndexPath:(NSIndexPath *)indexPath
    
    int thisRow = indexPath.row;
    PFUser *delFriend = [self.theFriends objectAtIndex:thisRow];

    NSLog(@"you wish to delete .. %@", [delFriend fullName] );

    // note, this cloud call is happily is set and forget
    // there's no return either way. life's like that sometimes

    [PFCloud callFunctionInBackground:@"clientRequestFriendRemove"
            withParameters:@
                            @"removeThisFriendId":delFriend.objectId
                            
            block:^(NSString *serverResult, NSError *error)
            
            if (!error)
                
                NSLog(@"ok, Return (string) %@", serverResult);
                
            ];

    [self back];    // that simple
    

注意,我注意到这是一个谷歌登录页面,用于试图弄清楚“如何进行云代码调用”(与 Swift 无关)。这是一套完整的适用于 iOS 和 Android 的示例代码自定义云代码功能,在 Parse.com 宇宙中https://***.com/a/24010828/294884希望它可以帮助某人

【问题讨论】:

稍后 - 完整示例代码 ***.com/a/24261024/294884 【参考方案1】:

将 Objective-C .m 文件添加到您的项目中。 Xcode 将询问有关创建桥头文件的问题。说是。

删除 .m 文件。在桥头文件中,添加您的导入语句:

#import <Parse/Parse.h>

另一个答案,它的演练比我的要好:https://***.com/a/24005242/353988

现在您可以在 Swift 中调用原生 Parse 代码,即:

import UIKit
import Foundation

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 

  var window: UIWindow?

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool 

    Parse.setApplicationId("appid", clientKey: "clientkey")
    var obj = PFObject(className:"TestObject")
    obj.setObject("bar", forKey: "foo")
    obj.saveInBackgroundWithBlock ( 
      (succeeded: Bool!, err: NSError!) -> Void in
      NSLog("Hi")
    )

  


【讨论】:

完美的解释!如此辉煌!我猜“callFunctionInBackground”或任何其他 Parse 调用都会起作用。 是的,只需要找到返回块的正确语法。 太棒了,还有来自 Awesome Parse Krew 的更多信息 ..parse.com/questions/ios-when-will-swift-for-parse-be-ready 在 saveInBackgroundWithBlock 之后添加了一个左括号【参考方案2】:

不可能调用这个确切的函数 (callFunctionInBackground),因为它是一个 obj-C 函数。

如何调用obj-c函数请参考this question。

随着时间的推移,Parse 还将引入 Swift 实现。

【讨论】:

Ahhhh ..你是说在 SWIFT 中调用 callFunctionInBackground 是不可能 ..我明白你的意思吗?干杯... 不可能调用这个确切的函数,因为它是 obj-C 函数 ;)。但是,您可以将 obj-C 类导入到您的 Swift 代码中,并根据 this link 实现 Swift 方法以在后台工作。或者,您可以像以前一样在 obj-C 中编写它,然后将其导入您的 Swift 代码,但第一种方法似乎更好。 抱歉,这是错误的。在 Swift 项目中访问 Objective-C 库很容易。 @Fosco 我没有其他要求。我说过你必须导入 Objective-C 并实现一个方法,在该方法中你使用导入文件中的 Objevtive-C 代码。我还附上了一个链接,您可以在其中准确解释如何在 Swift 中访问 Obj-C 方法,所以我不明白您是否投反对票。 这个链接确实很棒,但它前面是'not possible',后面是'with time'。

以上是关于如何进行 Parse.com 云代码调用?的主要内容,如果未能解决你的问题,请参考以下文章

从 Parse.com 云代码(Javascript SDK)获取信息的最佳方式

Parse.com 云代码失败

Parse.com - 从云代码函数返回多个值

Parse.com 云代码 - 保存后

使用云代码操作 parse.com 类

parse.com 云代码无法通过 mandrillapp 发送电子邮件