小编hav*_*ak5的帖子

当我进入主屏幕时,应用程序使用Facebook登录SDK崩溃

我最初下载了FBSDK的4.10版,并将它们放在我的应用程序中,方法是将它们放在frameworks文件夹中.意识到这些不会随着时间的推移而更新,我完全删除它们并尝试将它们作为pod添加到我的项目中.pod已成功安装,我已在我的桥接头文件中正确导入它们,并且没有其他问题.pods更新安装版本4.11,这让我有些头疼.

我正在使用FBSDKLoginKit将用户登录到他们的帐户并从中检索信息.我能够收到一份包含用户信息的字典.然后我将此信息传递给带有segue的下一个ViewController.在此之后的任何时候,如果我按下iPhone或模拟器上的主页按钮,应用程序将崩溃.我得到的错误是

*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: 
attempt to insert nil object from objects[3]'
Run Code Online (Sandbox Code Playgroud)

如果我让用户通过Facebook登录,转到新视图控制器,展开到上一个视图控制器,然后再次尝试登录,也会发生此异常.我曾尝试在第二个屏幕上检索相关信息时将用户注销,但错误仍然存​​在.

我已经看到了问这里的"解决方案"是,FBSDKLoginKit写入检索字典给一个变量,如果它已经收回到词典中零值,它抛出这个错误了类似的问题.

在它发生之前我有什么可以做的吗?有人找到了解决方法吗?

当我按下主页时,这是模拟器的输出:

*** First throw call stack:
(
0   CoreFoundation                      0x0000000106f03d85 __exceptionPreprocess + 165
1   libobjc.A.dylib                     0x000000010643edeb objc_exception_throw + 48
2   CoreFoundation                      0x0000000106e0023e -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 318
3   CoreFoundation                      0x0000000106e125bb +[NSDictionary dictionaryWithObjects:forKeys:count:] + 59
4   APPNAME                               0x0000000101607a1e -[FBSDKTimeSpentData instanceSuspend] + 622
5   APPNAME                                0x000000010160766b +[FBSDKTimeSpentData suspend] + 59
6   APPNAME                                0x00000001015b5986 -[FBSDKAppEvents applicationMovingFromActiveStateOrTerminating] + 262
7   CoreFoundation …
Run Code Online (Sandbox Code Playgroud)

ios swift fbsdk fbsdkloginkit

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

当应用程序在前台时,如何处理ios推送通知?

如何设置我的AppDelegate来处理应用程序在前台和后台使用swift 3和ios 10时发生的推送通知?如果我收到通知,包括如何让手机在前台振动.

apple-push-notifications appdelegate swift ios10

7
推荐指数
1
解决办法
4668
查看次数

如何使用setfacl和Dockerfile在Centos中创建永久性ACL

我正在尝试为一个组设置访问包含不断重新生成的目录和文件的目录的权限。

目录“ / var / lib / mod_tile”由组“映射器”和用户“ gis”拥有。文件夹上的权限为755(用户:rwx,组:rx,其他:rx)

该文件夹中的子目录会经常删除和重新创建,由于这些目录是由另一软件生成的,因此我无法控制这些目录的权限。生成的子目录的权限为755(与上面相同)。

我想创建一个ACL,以允许我的组“映射器”具有对这些文件夹的写访问权。我正在Dockerfile中运行以下命令:

RUN setfacl -Rm g:mappers:rwx /var/lib/mod_tile
RUN setfacl -Rdm g:mappers:rwx /var/lib/mod_tile
Run Code Online (Sandbox Code Playgroud)

这使我的目录及其子目录具有对组映射器的rwx权限。它使所有当前和新的子目录/文件都具有这些权限。

但是,在我建立映像并运行之后

docker run -it
Run Code Online (Sandbox Code Playgroud)

并检查权限

setfacl /var/lib/mod_tile
Run Code Online (Sandbox Code Playgroud)

ACL消失了,并且当我在“映射器”组中的另一个用户运行时,我正在使用的程序无法写入这些文件夹。

然后,当我运行时,我手动运行相同的命令

setfacl /var/lib/mod_tile
Run Code Online (Sandbox Code Playgroud)

权限在那里!这使我相信ACL不会在计算机的每次启动时都存在

有什么方法即使在重新启动时也能保留ACL?

acl docker centos7

6
推荐指数
0
解决办法
411
查看次数

如何使用表格标题视图内的排除路径正确调整文本视图的大小

我在 tableView 标题中添加了一个视图,由一个 imageView 和一个 textView 组成。图像视图在顶角左对齐,文本视图在图像视图上延伸到屏幕右侧,如下所示。

参考图片

textView 可以具有动态内容,并且具有如下设置的排除路径:

let imagePath = UIBezierPath(rect: imageView.frame)
self.textView.textContainer.exclusionPaths = [imagePath]
Run Code Online (Sandbox Code Playgroud)

我已经禁用了 textview 的滚动,并在标题视图中设置了以下约束:

TextView:左 - 8px,右 - 8px,顶部 - 0px,底部 - 8px

ImageView: left - 8px, width - 100px, height 100px, top - 8px, bottom - 大于或等于8px

我在 textView 填充动态文本后添加了此代码:

if let headerView = self.tableView.tableHeaderView {
    let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
    var headerFrame = headerView.frame

    if height != headerFrame.size.height {
        headerFrame.size.height = height
        headerView.frame = headerFrame
        self.tableView.tableHeaderView = headerView
    }
}
Run Code Online (Sandbox Code Playgroud)

它调整标题的大小。但是,当 textView 的文本少于图像的高度时,视图的大小会增加。 …

textview uitableview ios swift exclusionpath

2
推荐指数
1
解决办法
1169
查看次数

等待AWS SNS发布回调以将值返回给调用方法

我试图在用户请求重置密码时发送短信.我想等待发送消息以提醒用户是否成功.我目前正在尝试如下操作:

async function sendResetPasswordTextMessage(req, res) {
    let result = {};

    let phoneNumber = req.body.phoneNumber;                

    if (phoneNumber === undefined) {                       
        return sendInvalidParametersMessage(res);          
    }                                                      

    phoneNumber = phoneNumber.toString();                  

    const userProfile = await models.UserProfile.findOne({ 
        where: {                                           
            phoneNumber: phoneNumber                       
        }                                                  
    });                                                    
    ************************** RELEVANT CODE TO ISSUE *************************
    if (userProfile) {
        const message = "Your username is:\n" + userProfile.username;
        const sent = await AWSSNSClient.sendMessage(message, phoneNumber);

        if (!sent) {
            result.error = setTitleAndMessage("Error", "An error occurred");
        } else {
            result.success = setTitleAndMessage("Success", "Message sent"); 
        }
    }
    return res.send(result); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js amazon-sns async-await aws-sdk-js

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