Ios 将对象保存到Firebase
第一次使用Firebase应用程序。我知道它不允许您保存实际的Objective C对象。我知道所有内容都保存在JSON树中,可以是NSString、NSNumber、NSArray和NSDictionary。实际上,您必须深入到每个属性才能获得实际值。前 假设您有myObject=>Firebase不喜欢它。您必须通过获取属性来设置值。例如,myObject.name(将是一个字符串)。如果你的对象有很多属性,这是非常恼人的 我知道您可以实现NSCoding,使其更加优雅。我以前从未这样做过。我为用户提供了以下对象Ios 将对象保存到Firebase,ios,objective-c,object,firebase,Ios,Objective C,Object,Firebase,第一次使用Firebase应用程序。我知道它不允许您保存实际的Objective C对象。我知道所有内容都保存在JSON树中,可以是NSString、NSNumber、NSArray和NSDictionary。实际上,您必须深入到每个属性才能获得实际值。前 假设您有myObject=>Firebase不喜欢它。您必须通过获取属性来设置值。例如,myObject.name(将是一个字符串)。如果你的对象有很多属性,这是非常恼人的 我知道您可以实现NSCoding,使其更加优雅。我以前从未这样做过。
#import <Foundation/Foundation.h>
@interface User : NSObject <NSCoding>
@property (nonatomic, copy) NSString *username;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *currentCity;
@end
因此,当保存到存储在Firebase中的用户对象时,我们是否只在保存到Firebase时对对象进行编码
我有点困惑如何保存它,甚至检索它。解析要简单得多,但对于这个应用程序,我需要使用firebase
任何关于你们如何处理这件事的帮助或例子都将不胜感激
谢谢你 这并不能直接回答这个问题,但提供了一个简单的选择 将firebase节点视为具有名称,然后是一组键/值属性。类似于ObjC中的对象 为了让它变得非常简单,只需为您的ObjC对象提供一些智能来处理从Firebase读入的字典,并在ObjC对象更改时更新Firebase子节点 比如,;作为FDataSnapshot读入单个firebase节点(具有子级属性)。(假设我们只读取一个节点,而不是它们的数量)。快照具有.value属性,该属性是键/值对的字典。下面是Firebase中的外观:
user_id_0
userName: "dude"
name: "Joe Smith"
currentCity: "Miami"
您的用户对象将是具有三个相同属性的对象;用户名、姓名和当前城市。(匹配本例中的名称很重要)
初始化用户对象时,只需从FDataSnapshot(ss)将字典传递给它,它就会从这些键填充自己。像这样的
NSDictionary *dict = ss.value;
User *aUser = [User new];
[aUser initWithDict:dict];
在用户对象的initWithDict方法中
for ( id key in dict ) {
id value = dict[key];
[self setValue:value forKey:key];
}
上面介绍了Firebase字典中的每个键/值对,然后在用户对象中填充匹配的属性。这也允许用户对象非常灵活;与将新的子值(属性)添加到firebase中的节点(如favoriteFood)时一样,只需将其作为同名属性添加到用户对象中即可
如果不想将名称绑定在一起,可以使用Firebase名称上的一些If..then来填充用户对象
同样,在更新用户对象的属性时,使用用户对象中更新firebase中的子节点的方法。提示:您还应该将Firebase节点名称存储在用户对象中,以便它知道要更新哪个节点
拥有此功能还有100种其他方式,但此选项确实简化了将数据移入和移出Firebase的过程。嗨,Jay,感谢您的回复。所以基本上所有的对象都应该指向Firebase上的特定节点?我能够登录并用firebase的数据填充我的对象——这并不像解析那个样直观。是的!每个对象(例如用户对象)都知道它在Firebase中的节点。当对象被更新时,它将自动知道更新Firebase中对应的节点。我建议不要直接比较Parse和Firebase;它们是不同的平台,您存储(以及处理)数据的方式也不同。
for ( id key in dict ) {
id value = dict[key];
[self setValue:value forKey:key];
}