小编sup*_*p-f的帖子

Swift Array.contains()不调用PFUser子类的Equatable函数

我有一个PFUser的子类- MYUser类,带有Equatable函数的实现,用于以这种方式比较objectIds:

func ==(left: MYUser, right: MYUser) -> Bool {
    return left.objectId == right.objectId
}
Run Code Online (Sandbox Code Playgroud)

但是当我调用Array.contains()方法时,它不会调用Equatable函数的这个实现,这会导致不正确的结果.例如,这里:

let hasUser = self.selectedUsers.contains(currentUser)
Run Code Online (Sandbox Code Playgroud)

如果selectedUsers数组包含不同的内存对象但是与currentUser中的 objectId相同,则hasUser变为false.

有趣的是,Equatable函数实现在直接使用中被调用.这里:

var hasUser = false
for itUser in self.selectedUsers {
  if itUser == currentUser {
    hasUser = true
    break
  }
}
Run Code Online (Sandbox Code Playgroud)

成功调用了==运算符,并且hasUser具有不同内存对象的正确值,但具有相同的objectId

它可能是什么原因?

UPDATE.这是MYUser课程:

class MYUser: PFUser {

    // MARK: - Parse Object

    @NSManaged var avatarFile: PFFile?
    @NSManaged …
Run Code Online (Sandbox Code Playgroud)

arrays parse-platform swift pfuser

8
推荐指数
1
解决办法
1368
查看次数

80年代的第一个日期未能在iOS 10.0中解析

我发现DateFormatter date(from:)方法无法解析几个特定的​​日期.方法返回nil1981年至1984年的第一个月.这是基金会的错误吗?我们可以做些什么来解析这些日期?

Xcode 8.0,iOS SDK 10.0.这是一个简短的游乐场示例的屏幕截图: 一个简短的游乐场示例的屏幕截图

foundation nsdateformatter ios swift

5
推荐指数
1
解决办法
794
查看次数

在电子邮件注册方法的.onCreate触发器中未定义用户displayName

我尝试.onCreate在Firebase云功能中实现firebase云功能codeLab(https://codelabs.developers.google.com/codelabs/firebase-cloud-functions/#7)

exports.addWelcomeMessages = functions.auth.user().onCreate(event => {
  const user = event.data;
  console.log('user: %j', user);
  const fullName = user.displayName;

  return admin.database().ref('messages').push({
    name: 'Firebase Bot',
    text: `${fullName} signed in for the first time! Welcome!`
  });
});
Run Code Online (Sandbox Code Playgroud)

在我的客户端iOS应用程序中,我使用FirebaseUI的电子邮件身份验证流程,要求用户输入他的电子邮件,名称和密码进行注册.用户注册后,.onCreate云功能触发器触发,但user结构不包含displayName数据:

user: {"email":"my@gmail.com","metadata":{"createdAt":"2017-04-05T05:30:05.000Z","lastSignedInAt":"2017-04-05T05:30:05.000Z"},"uid":"wpIPNvf2suQdMumsEyXA5lQatt23"}
Run Code Online (Sandbox Code Playgroud)

注意:注册过程后,iOS应用中当前用户实例中的displayName属性FIRUser正确填充.

我认为FirebaseUI中的某种错误是首先使用电子邮件创建一个空用户,触发.onCreate触发器并且仅在此填充displayName属性之后.是吗?

如果没有,可能是什么原因造成的?

ios firebase firebase-authentication firebase-realtime-database

3
推荐指数
2
解决办法
688
查看次数