我正在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帖子.花了一个小时研究之后,我得出结论认为这不是正确的解决方案,因为我不应该在不同的工作空间中编辑这些模块.
当我将UIView作为垂直堆栈视图的元素并将该元素的"hidden"属性从true更改为false时,更改会自动设置动画,并且元素在变为可见时向下移动.我希望它向上移动.有没有办法做到这一点?
我正在尝试使用自定义域设置区域 API 网关,但遇到了一个涉及 SSL 证书的问题。这是我所做的:
当我跑
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”时一样。因此,我认为问题不在于我的机器不信任证书颁发机构。
在使用最新的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) 我的存储库使用 git LFS 并在其 .gitattributes 中包含诸如此类的行:
*.jar filter=lfs diff=lfs merge=lfs -text
Run Code Online (Sandbox Code Playgroud)
我想直接在 repo 中存储一个 .jar 文件,不涉及 LFS。理想情况下,我会让 LFS 不适用于包含该 jar 的目录下的任何内容。有没有办法做到这一点?