我有以下属性结构 Chat
struct Chat {
var id = String()
var gender = String()
var date = Date()
init() {}
}
Run Code Online (Sandbox Code Playgroud)
在视图控制器中,我声明了一个名为Chat的实例observablechat
,然后我使用flatmap运算符来尝试并观察date
属性的变化observablechat
.但是,如果我更改性别属性(如图所示),则会触发订阅.我想知道为什么会这样,我如何修复此代码,以便订阅只查看date
属性发生了什么,没有别的?
class ViewController: UIViewController {
var observablechat = Variable(Chat())
observablechat.asObservable()
.flatMap { (Chat) -> Observable<Date> in
return Observable.of(Chat.matchDate)
}.subscribe(onNext: { (r) in
print(r)
}).addDisposableTo(disposeBag)
self.observablechat.value.gender = "male"
//triggers subscription above.
}
}
Run Code Online (Sandbox Code Playgroud) 这是我复制bug的方法.所以这是我登录的代码:
@IBAction func FBLoginAction(_ sender: AnyObject) {
fbLoginManager.loginBehavior = FBSDKLoginBehavior.browser
fbLoginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self) { (result, error) -> Void in
if (error != nil) {
return
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我登录两次,然后再次运行该应用程序,此行将在appdelegate中崩溃.
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
Run Code Online (Sandbox Code Playgroud)
如果我只登录一次,然后再次运行应用程序,则不会发生崩溃.崩溃的完整堆栈如下:
2016-12-09 10:51:28.893持久性[73125:897290] - [NSConcreteMutableData isEqualToString:]:无法识别的选择器发送到实例0x60000004ec40 2016-12-09 10:51:28.903持久性[73125:897290]***终止应用由于未捕获的异常'NSInvalidArgumentException',原因:' - [NSConcreteMutableData isEqualToString:]:无法识别的选择器发送到实例0x60000004ec40'
***首先抛出调用堆栈:(0 CoreFoundation 0x00000001085e634b exceptionPreprocess + 171 1 libobjc.A.dylib
0x0000000107c2a21e objc_exception_throw + 48 2 CoreFoundation
0x0000000108655f34 - [NSObject(NSObject)doesNotRecognizeSelector:] + 132 3 CoreFoundation 0x000000010856bc15 ___forwarding_ + 1013 4 CoreFoundation 0x000000010856b798 _CF_forwarding_prep_0 + 120 5 FBSDKCoreKit
0x000000010700aa5a …
我有一个包含的架构Friends
.Friends是一个数组,其中每个元素都是一个包含id,gender和emoji的对象.
var userSchema = new Schema({
id: {
type: String,
unique: true,
required: true
},
gender: String,
Friends: [{
id: String
gender: String
emoji: String
}]
});
Run Code Online (Sandbox Code Playgroud)
在下面的代码中,我正在访问一个包含Friends数组的文档,并指定使用它的搜索distinct
只显示文档的Friends数组.我只需要访问包含指定id的那个数组的一个元素.不像在代码中完成的那样在查询之后过滤那个数组,有没有办法只从查询中获取元素?换句话说,是否有一个额外的功能来区分或某种类型的猫鼬运算符,允许这样做?
User.findOne().distinct('Friends', { id: req.body.myId }).then(function(myDoc) {
var friendAtt = myDoc.filter(function(obj) {
return obj.id == req.body.id
})[0]
})
Run Code Online (Sandbox Code Playgroud) 所以我导入 PromiseKit 然后尝试
FIRDatabase.database().reference().child("somechild").removeValue().then {
/////
}
Run Code Online (Sandbox Code Playgroud)
显然,这行不通,我想知道如果可能的话,我错过了什么让承诺与 Firebase 一起工作。我想要完成的是使用单个 catch 方法一次删除四个 Firebase 引用。
使用 nodeJs 我很容易使用:
Promise.all ([
someRef.remove(),
someRef.remove(),
someRef.remove(),
someRef.remove()
]).then (function({
}).catch({
//handle error
})
Run Code Online (Sandbox Code Playgroud)
有没有办法在 Swift 中做到这一点?
var User = require('../ models/user');
所以在Visual Studio中,我创建了一个名为models的文件夹,里面有一个名为user.js的文件.根据我的学习,使用./models/user而不是两个点是有意义的.虽然,这给我一个崩溃,我想知道可能是什么原因.谢谢
class User: Object {
dynamic var name = ""
let tasks = List<Task>()
}
let realm = try! Realm()
let predicate = NSPredicate(format: "tasks != nil")
users = realm.objects(User).filter(predicate)
Run Code Online (Sandbox Code Playgroud)
我需要获取保存到数据库中的所有用户,这些用户已保存任务.就像谓词所暗示的那样,每个用户必须有任务,如果用户不提取任务.显然,我提供的谓词不起作用,并且始终与消息"包含数组属性的键路径必须使用聚合操作"崩溃.无论如何,我怎么能做这个工作?