小编Chr*_*ons的帖子

将Swift应用程序的组件划分为Swift模块

我正在Swift中编写一个iOS应用程序,我正在试图弄清楚如何将项目组织成单独的模块.我正在使用MVVM架构,我想让Model,ViewModel和View组件分开Swift模块,这些模块只能使导入它们的模块可以访问它们自己的子集.View中的文件将导入ViewModel,ViewModel中的文件将导入Model.我怎么能做到这一点?请注意,我不是要创建多个应用程序可以共享的库.我只是想使用模块强制分离组件.

编辑:也许问题是,"我应该使用什么机制来创建模块,而不是初始iOS应用程序项目附带的模块?"

"如何在Swift中使用命名空间?"中的答案之一 /sf/answers/1682300231/说,"类(等)是由它们所在的模块(Xcode目标)隐式确定的." 由此可以得出结论,目标对应于模块,答案是在Xcode项目中创建单独的目标,但我之前尝试过,而tskulbru说我需要多个Xcode项目.

关于多个Xcode项目,文件>新建>项目> iOS框架和库> Cocoa Touch Framework选项看起来不正确,因为它应该用于使用UIKit的东西,我想要创建的两个模块不应该依赖在UIKit上.另一个"框架和库"选项,Cocoa Touch静态库,不是Swift的选项.

使用私有Pod提到的另一个StackOverflow帖子.花了一个小时研究之后,我得出结论认为这不是正确的解决方案,因为我不应该在不同的工作空间中编辑这些模块.

xcode module mvvm swift

11
推荐指数
1
解决办法
5553
查看次数

取消隐藏UIStackView元素时的动画方向

当我将UIView作为垂直堆栈视图的元素并将该元素的"hidden"属性从true更改为false时,更改会自动设置动画,并且元素在变为可见时向下移动.我希望它向上移动.有没有办法做到这一点?

animation ios uistackview

10
推荐指数
2
解决办法
3327
查看次数

API Gateway 自定义域证书错误

我正在尝试使用自定义域设置区域 API 网关,但遇到了一个涉及 SSL 证书的问题。这是我所做的:

  • 使用 ACM,为vitalservices-3.docriot.com 创建了一个证书。
  • 在API Gateway中,创建了区域自定义域名--vitalservices-3.docriot.com--为其分配了vitalservices-3.docriot.com证书,并添加了“/”到“vitalservices-3”的基本路径映射:产品”。
  • 在 docriot.com 的 Route53 托管区域中,创建了一个 CNAME 记录,将vitalservices-3.docriot.com 映射到 82cgbm6s93.execute-api.us-east-1.amazonaws.com。该记录具有基于延迟的路由策略,但目前它是vitalservices-3.docriot.com 的唯一记录。

当我跑

curl https://82cgbm6s93.execute-api.us-east-1.amazonaws.com/prod
Run Code Online (Sandbox Code Playgroud)

我得到

{"message":"Missing Authentication Token"}
Run Code Online (Sandbox Code Playgroud)

这正是我所期望的,因为 API 需要 Cognito 身份验证。当我使用“-k”选项忽略证书错误并运行时,我收到相同的消息

curl https://vitalservices-3.docriot.com -k
Run Code Online (Sandbox Code Playgroud)

但是如果我放弃 -k 并运行

curl https://vitalservices-3.docriot.com
Run Code Online (Sandbox Code Playgroud)

我得到

curl: (60) SSL certificate problem: Invalid certificate chain . . .
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

编辑:我只是在我的 OS X 机器上使用 curl,因为我认为这是一种更简单的说明错误的方法。当我在 Chrome 浏览器中访问这些 URL 时,我得到了类似的行为。如果输入https://vitalservices-3.docriot.com,我会在 URL 栏中看到红色警告三角形,页面上显示“攻击者可能正试图窃取您的信息......”。然后,如果我仍然选择查看该页面的选项,浏览器将显示一个带有文本“{"message":"Missing Authentication Token"}”的页面,就像我使用“curl -k”时一样。因此,我认为问题不在于我的机器不信任证书颁发机构。

我附上了当我在 url 栏中单击“不安全”并查看证书信息时所看到的屏幕截图。在此处输入图片说明

ssl amazon-web-services aws-api-gateway

10
推荐指数
1
解决办法
4316
查看次数

Android - 使用lldb调试预构建的本机库

在使用最新的Android Studio工具时,如何让lldb看到预建的本机库的符号?

我正在使用Android Studio 2.2.2开发Android应用.我的应用程序有一个本机组件,还依赖于我的本机组件链接到的预构建的本机库.当我使用调试器分解一些本机代码时,调试器具有我的本机代码的符号,但不是我使用符号构建的预构建库.我在调试预构建的本机库(https://developer.android.com/ndk/guides/prebuilts.html#dp)上找到的文档似乎已经过时,因为它引用了Android.mk和ndk-gdb,而不是build.gradle,CMakeLists.txt和lldb,这些都是我正在使用的.

对于熟悉lldb的人来说,这里有更多的信息(这并不是说我熟悉它).我认为它反映了这样一个事实:调试器正在查看我的本机代码的非符号剥离版本,在libnative-lib.so中,它存储在我的机器上,但是正在查看预构建的符号剥离版本库,libaws-cpp-sdk-vitalservices.so,存储在android设备上:

(lldb) image list
...
[107] B8FC838B-0000-0000-0000-000000000000            /Users/christophersimmons/.lldb/module_cache/remote-android/.cache/B8FC838B-0000-0000-0000-000000000000/libaws-cpp-sdk-vitalservices.so 
[108] A7AD2397-02E5-5AE9-0192-F2353B51C362-C40832C9            /Users/christophersimmons/Documents/repos/DoclilyAndroid/app/build/intermediates/cmake/debug/obj/x86/libnative-lib.so 
Run Code Online (Sandbox Code Playgroud)

android-ndk lldb android-studio

9
推荐指数
1
解决办法
737
查看次数

如何使 git LFS 不适用于子目录

我的存储库使用 git LFS 并在其 .gitattributes 中包含诸如此类的行:

*.jar filter=lfs diff=lfs merge=lfs -text
Run Code Online (Sandbox Code Playgroud)

我想直接在 repo 中存储一个 .jar 文件,不涉及 LFS。理想情况下,我会让 LFS 不适用于包含该 jar 的目录下的任何内容。有没有办法做到这一点?

git gitattributes git-lfs

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