GVKun编程网logo

swift (Vapor) 中的最终类和继承(oc继承swift类)

5

在这篇文章中,我们将为您详细介绍swift(Vapor)中的最终类和继承的内容,并且讨论关于oc继承swift类的相关问题。此外,我们还会涉及一些关于docker镜像中的Vapor`Public`目录

在这篇文章中,我们将为您详细介绍swift (Vapor) 中的最终类和继承的内容,并且讨论关于oc继承swift类的相关问题。此外,我们还会涉及一些关于docker 镜像中的 Vapor `Public` 目录没有暴露、iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts、Laracon 2019 第一天亮点 Laravel 6 和 Vapor、Laravel Vapor - 在公共开发数据库上创建用户失败并显示错误:需要 jumpbox的知识,以帮助您更全面地了解这个主题。

本文目录一览:

swift (Vapor) 中的最终类和继承(oc继承swift类)

swift (Vapor) 中的最终类和继承(oc继承swift类)

如何解决swift (Vapor) 中的最终类和继承

首先我知道 final 类的目的:没有其他类应该继承它。它还提供了一些额外的速度,因为编译器可以进行直接调用。

我正在用 Swift 网络框架 Vapor 编写一个项目。我想把项目拆分成可重用的模块,这样我就可以在以后的项目中使用它们,并且可以更轻松地维护它们。这些模块之一是 usermodel。 usermodel 的实现在数据库中创建一个表,将演示用户播种到表中,进行身份验证... 我想保持模型尽可能纯净,只添加用户名和密码作为变量

  1. class usermodel {
  2. var userName: String
  3. var password : String
  4. some functions...
  5. }

当时我的计划是在我的项目中创建一个继承自 usermodel 的 User 模型:

  1. class User : usermodel {
  2. var language : String
  3. var companyName : String
  4. ...
  5. }

添加特定于此项目的变量(并在此处使用迁移将额外字段添加到数据库,覆盖演示用户播种功能...

到目前为止一切顺利,对我来说似乎是合乎逻辑的一种好方法。

然而,Vapor 要求我采用 usermodel 的 Content 协议

  1. final class usermodel {
  2. ...
  3. }

并采用该协议要求我将 usermodel 类设为 final! (或者我最终会出现编译器错误:Protocol ''RequestDecodable'' 要求 ''decodeRequest'' 不能被非最终类(''usermodel'')满足,因为它在非参数中使用了 ''Self'',非-结果类型位置

所以我最终得到:

  1. final class usermodel

我不能继承

有人可以给我指出一种不是继承的方法,我仍然可以保留一个简单的可重用 usermodel 但为此项目添加特定字段... 我正在寻找一种以一种很好的、​​结构化的方式来实现这一点的方法,而不是一种 hack ......(除非它是一个可以接受的 hack ;))

docker 镜像中的 Vapor `Public` 目录没有暴露

docker 镜像中的 Vapor `Public` 目录没有暴露

如何解决docker 镜像中的 Vapor `Public` 目录没有暴露

我在 Mac 上使用 Xcode 运行 Vapor 4.3 和 Leaf,没有任何问题。

公共目录中间件已启用:

  1. let fileMW = FileMiddleware(publicDirectory: directory)
  2. app.middleware.use(fileMW)

一旦我使用默认的 dockerfile 构建图像并在 docker 上运行它,css 和所有图像文件就不再加载。

注意:dockerfilevapor new 命令附带的完全相同。 (更新到写这篇文章的日期)

Safari 显示此错误:

  1. [Error] Did not parse stylesheet at ''http://127.0.0.1/styles/index.css'' because non CSS MIME types are not allowed in strict mode.

resources

Chrome 显示此警告:

  1. Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://127.0.0.1/styles/index.css".

我错过了什么?

解决方法

看起来这是一个区分大小写的问题! Mac 可以找到有此问题的文件,但 Linux 没有!

⚠️ 即使你已经设置了:app.routes.caseInsensitive = true,也不会影响你的资源请求。

因此请确保您已完全按照 pwd 命令中显示的方式设置所有路径。

iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1>

iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts

如何解决iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1>

我不断收到来自随机用户的随机崩溃报告。不幸的是,我无法定期重现这一点。用户说崩溃是在 discussionViewController 中随机发生的。所有崩溃报告都有类似的内容:

0   libswiftCore.dylib              0x00000001a53face4 swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1> >::incrementSlow(swift::RefCountBitsT<(swift::RefCountInlinedness)1>,unsigned int) + 60 (atomic:1003)
1   libswiftCore.dylib              0x00000001a53c59e0 swift_retain + 124 (RefCount.h:813)
2   libswiftCore.dylib              0x00000001a5401d60 swift_bridgeObjectRetain + 56 (SwiftObject.mm:585)
3   APPNAME                             0x0000000102b59734 closure #1 in discussionViewController.fetchPostData() + 7916

这是完整的崩溃日志和崩溃的线程:

Hardware Model:      iphone11,6
Process:             APPNAME [11770]
Path:                /private/var/containers/Bundle/Application/.../APPNAME.app/APPNAME
Identifier:          ----
Version:             62 (62)
AppStoretools:       12E262
AppVariant:          1:iphone11,6:13
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           ---- [1824]


Date/Time:           2021-06-17 12:07:01.4346 +1000
Launch Time:         2021-06-17 12:06:56.4993 +1000
OS Version:          iPhone OS 14.6 (18F72)
Release Type:        User
Baseband Version:    3.04.01
Report Version:      104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x8000000000000010 -> 0x0000000000000010 (possible pointer authentication failure)
VM Region Info: 0x10 is not in any region.  Bytes before following region: 4339515376
      REGION TYPE                 START - END      [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                   102a7c000-102a94000 [   96K] r-x/r-x SM=COW  ...APPNAME.app/APPNAME

Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL,Code 0xb
Terminating Process: exc handler [11770]
Triggered by Thread:  3


Thread 3 name:
Thread 3 Crashed:
0   libswiftCore.dylib              0x00000001a53face4 swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1> >::incrementSlow(swift::RefCountBitsT<(swift::RefCountInlinedness)1>,unsigned int) + 60 (atomic:1003)
1   libswiftCore.dylib              0x00000001a53c59e0 swift_retain + 124 (RefCount.h:813)
2   libswiftCore.dylib              0x00000001a5401d60 swift_bridgeObjectRetain + 56 (SwiftObject.mm:585)
3   APPNAME                             0x0000000102b59734 closure #1 in discussionViewController.fetchPostData() + 7916
4   APPNAME                             0x0000000102ad09d4 thunk for @escaping @callee_guaranteed (@guaranteed Data?,@guaranteed NSURLResponse?,@guaranteed Error?) -> () + 132 (<compiler-generated>:0)
5   CFNetwork                       0x00000001a1b0a3dc __40-[__NSURLSessionLocal taskForClassInfo:]_block_invoke + 540 (LocalSession.mm:687)
6   CFNetwork                       0x00000001a1b1c768 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 244 (LocalSessionTask.mm:584)
7   libdispatch.dylib               0x00000001a10d1a84 _dispatch_call_block_and_release + 32 (init.c:1466)
8   libdispatch.dylib               0x00000001a10d381c _dispatch_client_callout + 20 (object.m:559)
9   libdispatch.dylib               0x00000001a10db004 _dispatch_lane_serial_drain + 620 (inline_internal.h:2557)
10  libdispatch.dylib               0x00000001a10dbc34 _dispatch_lane_invoke + 456 (queue.c:3862)
11  libdispatch.dylib               0x00000001a10e64bc _dispatch_workloop_worker_thread + 764 (queue.c:6589)
12  libsystem_pthread.dylib         0x00000001ed04a7a4 0x1ed047000 + 14244
13  libsystem_pthread.dylib         0x00000001ed05174c 0x1ed047000 + 42828

我已验证 discussionViewController.fetchPostData() 不会强制解开任何可选选项,没有 try! 并且在任何地方都使用 [weak self]self?。该函数非常大,所以我很难缩小崩溃发生的范围。

Laracon 2019 第一天亮点 Laravel 6 和 Vapor

Laracon 2019 第一天亮点 Laravel 6 和 Vapor

文章转发自专业的Laravel开发者社区,原始链接:https://learnku.com/laravel/t...

第一天的Laracon已经结束,有许多嘉宾进行了演讲!真是充满了精彩的演讲,精彩的人和新闻的一天!

集锦:

  • Laravel 社区
  • Justin Jackson 关于心理健康的演讲
  • Laravel 6 和 新的品牌
  • Vapor
        • *

社区

整个社区的生态环境是十分棒的, 这里的人超级友好跟热情,而且已经开启了很多新的问题和讨论过的话题。

空气中弥漫着合作共赢的气息, 社区成员愿意换帮互助,分享资料,构建开源项目和共度美好的时光。

        • *

Justin 的谈话

我会说这段谈话在本次活动中得到了很多的关注。

他所提到的一些主要的内容:

「你采取的每一个行动,都会为 你想成为的人 投上一票」 James Clear

「我们每个人都背负着心理包袱,如果未能够及时发现它,它可能会导致我们陷入破坏性的行为的状态」 Jerry Colonna

重要提示:

1- 寻求专业的帮助。\
2- 承担你生命的所有权。\
3- 反复的,做一些对你和他人有益的事情。\
4- 摆脱你的坏习惯。\
5- 迷失自我

在技术会议上听到心理健康讲座并不常见。但对于这项倡议的热烈掌声,让我相信这对人们的健康至关重要。

        • *

Laravel 6 & 新类型

  • 将于 8 月发布。
  • 新的全职后端开发人员将于下周加入该团队。
  • 新 Logo。
  • 新官网。

        • *

Vapor

"令人难以置信的简单的扩大你的规模."

Laravel Vapor 是由 AWS 驱动,可以对 Laravel程序进行无服务器部署的一项服务。使用 Vapor 部署你的 Laravel项目你会深深的爱上这种简便快捷的无服务。

主要特点

  • 购买一个许可即可创建无限的团队和项目
  • 临时和正式域名
  • 执行部署简单的命令
  • 通过图形化界面回滚
  • 零宕机时间
  • 简单的维护模式
  • 环境变量管理
  • 很多有用的统计指标
  • 通过 emailSlack 告警
  • 日志查看
  • 数据库管理
  • 使用 DynamoDBRedis 自动缓存
  • Serverless 和 自动伸缩
  • 队列处理

还有更多特性...

Laravel Vapor - 在公共开发数据库上创建用户失败并显示错误:需要 jumpbox

Laravel Vapor - 在公共开发数据库上创建用户失败并显示错误:需要 jumpbox

如何解决Laravel Vapor - 在公共开发数据库上创建用户失败并显示错误:需要 jumpbox

Laravel Vapor 数据库文档说明:

要快速创建性能等级最低的可公开访问的数据库,您可以在创建数据库时使用 --dev 标志。这些经济实惠的小型数据库非常适合测试或暂存环境

我使用建议的 vapor database dev-db --dev 命令创建了一个开发数据库,​​并且在 AWS 中创建了一个公共 db.t3.micro,但是当我使用 {{1 }} 命令我收到一个错误,需要一个 jumpBox:

哎呀!您的请求存在一些问题。

  • 创建数据库用户需要一个 jumpBox。

关于私有/公共数据库的文档说明:

此外,这些数据库可能是公开访问的(使用 Vapor 自动分配的长随机密码)或私有的。通常不能从公共 Internet 访问私有数据库。要从本地计算机访问它们,您需要创建一个 Vapor jumpBox。

既然 vapor database:user dev-db user1 数据库创建命令创建了一个可公开访问的数据库,为什么会返回一个错误,指出需要一个 jumpBox?

解决方法

这听起来像是一个错误,除非您尝试在数据库完成配置之前创建用户

关于swift (Vapor) 中的最终类和继承oc继承swift类的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于docker 镜像中的 Vapor `Public` 目录没有暴露、iOS Swift 应用程序随机 EXC_BAD_ACCESS 崩溃:swift_bridgeObjectRetain swift_retain swift::RefCounts、Laracon 2019 第一天亮点 Laravel 6 和 Vapor、Laravel Vapor - 在公共开发数据库上创建用户失败并显示错误:需要 jumpbox等相关内容,可以在本站寻找。

本文标签: