• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 为什么这个 NSString 在 FireBase 查询 block 中为空?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:15:58 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我不明白为什么这个字符串在 FQuery block 中为空。当我在用户键上构建 dailyLog MutableDictionary 时,我的应用程序不断崩溃;

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat"MMMM dd, YYYY"];

NSString *userID = [[self.userProfile objectForKey"userID"] copy];
self.logFirebase = [[Firebase alloc] initWithUrl"https://urlName.firebaseio.com/DailyLog"];
[[[self.logFirebase queryOrderedByPriority] queryEqualToValue:userID childKey"userID"] observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {

    if (![snapshot.value isEqual:[NSNull null]]) {
        NSMutableArray *data = [CGCFirebaseDataExtractor extractKeysAndObjects:snapshot.value];

        self.dailyLog = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat"Name CONTAINS[cd] %@",[df stringFromDate:[NSDate date]]]].lastObject;
    }else{
        self.dailyLog = [[NSMutableDictionary alloc] init];
        NSLog(@"users Profile:%@",self.userProfile);
        NSLog(@"users ID :%@",[self.userProfile objectForKey"userID"]);

        [self.dailyLog setObject:[df stringFromDate:[NSDate date]] forKey"date"];
        [self.dailyLog setObject:[self.userProfile objectForKey"userID"] forKey"user"];
        [self.dailyLog setObject:[NSNumber numberWithInt:450] forKey"calories"];


        [[self.logFirebase childByAutoId] setValue:self.userProfile];

    }

}];

编辑: 当我登录 self.userProfile 时,我得到了我想要的正确信息。但是当我从 FQuery block 中记录用户 ID 本身时,它是空的

这是我更新的崩溃数据:

2015-05-08 13:21:22.709 <appname>[4160:1321097] users Profile:{
"-JoirTqCXFFDY1psLTNn" =     {
    dateRegistered = "1431010405.81792";
    userID = "304D92EF-CE77-4A10-A55F-9847153699F7";
    userName = "User's Name";
};
 }
 2015-05-08 13:21:22.709 <appname>[4160:1321097] users ID null)
 2015-05-08 13:21:22.714 <appname>[4160:1321097] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: user)'
  *** First throw call stack:
  (0x1852082d8 0x196a340e4 0x1850f1428 0x10007de00 0x1001454d0 0x100390fd4 0x100390f94 0x100395c28 0x1851bf7f8 0x1851bd8a0 0x1850e92d4 0x18e8ff6fc 0x189caefac 0x10007f14c 0x1970b2a08)
   libc++abi.dylib: terminating with uncaught exception of type NSException



Best Answer-推荐答案


对不起,我是个白痴,没有仔细看你的日志。

2015-05-08 13:21:22.709 <appname>[4160:1321097] users Profile:{
"-JoirTqCXFFDY1psLTNn" =     {
    dateRegistered = "1431010405.81792";
    userID = "304D92EF-CE77-4A10-A55F-9847153699F7";
    userName = "User's Name";
};

这个对象显然是字典中的字典。第一个(外部)字典有键 "-JoirTqCXFFDY1psLTNn" 这是它唯一的键。这就是为什么尝试获取 key userID 失败的原因;该键是第二个(内部)字典的一部分。

关于ios - 为什么这个 NSString 在 FireBase 查询 block 中为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30129116/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap