Rxswift

你试试print(todo.get("title")!.value) 或者print(todo.get("title")!.stringvalue)

就是在get()方法后面加上.value或者.stringvalue,你试一试

首先,xcode版本8.3.3,语言采用swift 3

我们打算用swift 3实现ChatKit ,因为ChatKit 目前是OC版本的,还没有swift 3版本的Chatkit,我们决定采用桥接的办法在swift 3里面实现ChatKit ,具体步骤如下:

第一步,用xcode新建一个singleview工程 屏幕快照 2017-08-25 下午8.31.13.png 1196x665 141 KB

然后关闭刚才建立的工程,打开终端,也就是在Mac的实用工具里面找到这个“终端”:

打开终端后cd 到刚才关闭的工程所在目录,你可以在cd命令后空一格,然后用鼠标拖动目标文件夹到cd命令之后,省着敲字符了,然后一回车就成了

执行命令 pod init 这个命令的作用是在工程所在文件夹新建一个Podfile

等终端里面命令执行完毕之后,打开Finder进入工程所在目录,找到Podfile这个文件,如图示:

找到podfile这个文件后,在这个文件上点右键,弹出菜单

然后点击其它,选择xcode 屏幕快照 2017-08-25 下午8.57.47.png 700x431 122 KB

用xcode打开后是这样的 屏幕快照 2017-08-25 下午8.59.14.png 764x219 36.2 KB

然后我们在leancloud网站上找相关说明文档

仔细阅读这个指南,我们找到:

复制这一行到刚才的podfile,结果是这样的

保存成功后,关闭xcode,进入终端,执行命令pod update,看到屏幕上显示如下,就说明pod成功了

下一步还是找到刚才Finder里面工程所在的目录,会发现多了几个文件,选择如下这个文件,双击打开

选择图中所示的这个文件

点击xcode工具栏里面File > New > File > iOS > Source > Header File,选择图中所示,建立一个桥接头文件,感觉这个头文件的名字可以随意,这里使用的是系统默认的文件名字,直接点下一步 屏幕快照 2017-08-25 下午9.17.54.png 1018x588 120 KB

虽然header文件名字可以随便起,但是一定要选择图中对话框下面这个target ,然后点下一步

进入已经建好的header文件,修改其内容如下

然后我们再次回到我们的工程,找到并复制这个文件的文件名LCChatKit.h 屏幕快照 2017-08-25 下午9.24.26.png 270x614 86.8 KB

把这个文件名LCChatKit.h粘贴到刚才的header文件里,具体如下

下一步选择图示的这个文件:

然后选择右侧的build setting

然后在搜索框里输入search paths 回车

找到User Header Search Paths 如图所示 屏幕快照 2017-08-25 下午9.42.12.png 610x556 92.8 KB

双击这个蓝条右半部分,会出现这个

点击+,输入${SRCROOT} ,后边选择recursive。

然后返回咱们的工程按command + B键,building一下,succeeded!

但是会蹦出来362个警告,这些警告好像基本属于SDK本身的问题,不影响使用,暂时不去管它!

然后我们得验证一下是否成功,打开项目的AppDelegate.swift文件

激动的时刻就要来了,在AppDelegate.swift文件的开头import ChatKit

按command + B键,building一下,succeeded!

目测已经用Swift语言成功导入ChatKit !!!

下一步我们要开启 LeanCloud 服务,具体方法,进入AppDelegate.swift这个文件,找到application:didFinishLaunchingWithOptions 函数,在这个函数里调用 LCChatKit.setAppId(你的appID, appKey: 你的appKey),AppId 和 appKey 可以在 控制台 > 应用设置 中找到。 屏幕快照 2017-08-27 上午9.58.42.png 708x179 46.3 KB

测试一下,点击xcode运行按钮,我们看到屏幕下方出现这个,说明服务开启成功:

最近从OC切换到swift,OC版的文档中提到客户端只需要实现 AVIMSignatureDataSource 协议接口,然后在用户登录之前,把这个接口赋值给 AVIMClient.signatureDataSource 即可。文档中的示例代码如下: // Tom 创建了一个 client,用自己的名字作为 clientId AVIMClient *imClient = [[AVIMClient alloc] initWithClientId:@"Tom"]; imClient.delegate = self; imClient.signatureDataSource = signatureD…

do { // 构建对象 let todo = LCObject(className: "Todo") // 为属性赋值 try todo.set("title", value: "工程师周会") try todo.set("content", value: "周二两点,全体成员") // 将对象保存到云端 _ = todo.save { result in switch result { case .success: // 成功保存之后,执行其他逻辑 break case .failure(error: let error): // 异常处理 print(error) } } } catch…

反复阅读了swift文档关于即时通讯使用内建账户完成签名这部分,然后运行了一下 override func viewDidLoad() { super.viewDidLoad() _ = LCUser.logIn(username: "username", password: "password") { (result) in switch result { case .success(object: let user): do { let client = try IMClient(user: user) client.open(completion: { (result) in // 执行…

我的操作是: 第一步:控制台开启登录启用签名认证、对话操作启用签名认证和聊天记录查询启用签名认证; 第二步:下载最新的LeanCloud Swift SDK(查了一下podfile文件里面是pod 'LeanCloud', '~> 16.5.0')并修改App ID 和App Key: https://github.com/leancloud/swift-sdk-demo 第三步:在application(_:didFinishLaunchingWithOptions:) 或viewDidLoad方法里加入下面代码: _ = LCUser.logIn(username: "usernam…

上述代码执行完毕,登录即时通讯client.open是成功的。但进入控制台查看,_Conversation里面却没有记录,createConversation没有成功。打印显示[deinit]: IMClient ID deinit。 上面整个操作过程,就是在swift-sdk-demo [ demo地址: https://github.com/leancloud/swift-sdk-demo ] viewDidLoad方法里添加了文档所说的用内建账户进行签名的方法,并试了一下createConversation。 但是开启签名并登陆成功后, createConversation却没成功,判断…

do { try client.createConversation(clientIDs: ["Jerry9"], name: "Tom & Jerry", isUnique: true, completion: { (result) in switch result { case .success(value: let conversation): print("conversation :\(conversation)") case .failure(error: let error): print("error:\(error)") } }) } catch { print("e…

请问是“客户端如何支持操作签名”这部分吗?

谢谢。要是有swift方面的完整签名的demo就好了

文档中提到:“LeanCloud 内置账户系统与即时通讯服务可以共享登录签名信息,这里我们直接用 logIn 成功之后的 AVUser 实例来创建 IMClient,在即时通讯服务的用户登录环节,LeanCloud 云端会自动关联账户系统来确认用户身份的合法性,这样可以省掉 SDK 向第三方申请登录签名的操作,进一步简化开发流程。” 特别是文档这句:“IMClient 完成即时通讯系统登录之后,其他功能的使用就和之前的介绍没有任何区别了。”好像这句有问题。 我觉得“其他功能”要想实现,整个流程应该是有区别的,内建账户实现的签名过程只对“登录”这一个环节有效,登录以后,后面其他功能应该还是需要单…

Swift SDK,请问实时通信conversation.queryMessage每次查询最多能查多少条message?谢谢。

在这个文档中,JavaScript介绍里说: ... conversation.queryMessages({ limit: 10, // limit 取值范围 1~1000,默认 100 }).then(function(messages) { // 最新的十条消息,按时间增序排列 }).catch(console.error.bind(console)); ... 但是在swift介绍里说: “每次查询也有 100 条限制” ... 所以比较迷惑,swift sdk 普通对话的消息查询(不是聊天室),一次查询条数最大是1000还是100?

截屏2019-09-26上午11.52.30.png 1006x561 169 KB

Demo地址 https://github.com/leancloud/swift-sdk-demo#LeanCloud-Agora xcode版本10.3

可能是xcode版本的问题,升级xcode11.1解决了

根据文档,自定义消息类型的实现过程是:“实现 IMMessageCategorizing 协议; 子类将自身类型进行注册,一般可在 AppDelegate 的 application(_:didFinishLaunchingWithOptions:) 方法里面调用 try CustomMessage.register()” 我的问题是,如果已经实现了上述步骤,如果我想在自定义消息里设置两个新变量:温度和湿度,然后用温度湿度合成天气,类似于IMLocationMessage,具体代码该如何实现(增加两个变量:温度和湿度,然后用温度湿度合成天气)?(看了demo里IMLocationMessage…

Rxswift: IMLocationMessage 非常感谢这么快回复。如果我想仿照IMLocationMessage消息类型,自定义一个新消息类型,新消息类型里面包含两个String变量temperature,humidity,还让这两个变量合成:self.weather = Weather(temperature: temperature, humidity: humidity)除了实现文档里说的IMMessageCategorizing协议,有没有具体的swift的示例代码呢?

我这里还是继承IMCategorizedMessage从而自定义新的消息类型更方便些。要是有swift示例代码最好了(继承IMCategorizedMessage,自定义新的消息类型)

如果继承 IMLocationMessage,在 IMLocationMessage的基础上再添加天气,好像涉及到新变量(天气)的编码解码问题

感谢,attributes可以,但如果能自定义变量,感觉会更方便一些

项目地址 https://github.com/leancloud/swift-sdk-demo 比如在SettingsViewController里面: func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { switch section { case 0: if let _ = Client.current.tag { return 4 } else { return 3 } case 1: return 1 case 2: return 1 default: fata…

current默认类型是IMClient!,最好改成IMClient? 我找了半天崩溃原因,原来是因为current后面没有加问号(demo里Client.current.tag是不加问号的),最好默认类型是IMClient?,减少出错

服务器收到客户端的查询请求,除了返回查询的结果,能否同时提供一下服务器收到客户端查询请求时的时间

不是用于调试,是想实现在界面显示不同访问者对同一条数据的实际访问时间,好让其他人明确谁在什么时候访问了这条数据

细读了“扩展自己的消息类型”这部分文档,简单实现了: // 定义 CustomMessage 类 class CustomMessage: IMCategorizedMessage { // 指定 type 类型,可以根据实际换成其他正整数 class override var messageType: MessageType { return 1 } } // 注册消息类型 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.Lau…

SDK 版本 LeanCloud-Swift-SDK/17.6.0 ...创建对话: do { try Client.current.createTemporaryConversation(clientIDs: members, timeToLive: 3600) {(result) in switch result { case .success(value: let tempConv): print("临时对话creator: \(tempConv.creator)") case .failure(error: let error): UIAlertController.show(erro…

感谢回复,创建临时会话成功的当时,确实可以打印出creator,我以为收到临时会话也能打印出creator,看来是不行。