有没有办法在Apple的TestFlight Beta测试服务上重新发送邀请给外部测试人员?
(我指的是通过iTunes Connect访问的外部beta测试设施,而不是Apple自Apple收购之前提供的独立TestFlight服务.)
在iTunes Connect中,在我的应用程序/预发布/外部测试人员下,测试人员的状态仅显示为"已邀请".不幸的是,这个测试人员有一个过度活跃的垃圾邮件过滤器,只是删除所有垃圾邮件,所以他无法访问原始邀请.我无法在TestFlight UI上找到任何控件来重新发送它.我已经尝试过关闭和开启测试,但这似乎没有帮助.
如何在Swift中创建不可变数组?
对文档的肤浅解读表明你可以做到
let myArray = [1,2,3]
Run Code Online (Sandbox Code Playgroud)
但遗憾的是,这实际上产生了一个可变的,固定大小的数组.这种可变性创建了常见的谜题,其中包含未预料到的别名和函数,这些谜题会改变其参数:
let outterArray = [myArray, myArray]
outterArray[0][0] = 2000
outterArray //=> [[2000,2,3],[2000,2,3]] surprise!
func notReallyPure(arr:Int[]) -> () { arr[0] = 3000 }
notReallyPure(myArray)
myArray // => [3000,2,3]
Run Code Online (Sandbox Code Playgroud)
没比C好多少
如果我想要不变性,那么最好将它包装NSArray成如此:
let immutableArray = NSArray(myArray: [1,2,3])
Run Code Online (Sandbox Code Playgroud)
这看起来很疯狂.我在这里错过了什么?
更新时间(2015-07-26):
这个问题可以追溯到斯威夫特的早期阶段.从那时起,Swift已经更新,因此不可变数组实际上是不可变的,如下面的答案所示.
有没有办法将提交推送到远程git仓库,而不首先制作该仓库的本地克隆?
我有一个有效的远程仓库URL,我知道文件的路径,我想要做的就是将文件的更新版本推送到主服务器上.理想情况下,我希望这可以使用任何有效的远程repo URL,但如果它只适用于基于https的git URL,它仍然会有用.
我猜这是不可能的,因为根据答案如何在远程仓库中"git show",即使在一般情况下没有克隆也无法检索单个文件?.但是我希望有一种解决方法可以使用一些较低级别的git命令.
这很简单但是:如果我尝试使用iOS10的新"统一记录和活动跟踪"API,我究竟如何设置我在Console.app中看到的日志消息的级别?
换句话说,如果我在iOS上运行代码如下:
fileprivate let logger = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "mycategory")
fileprivate func logv(_ s:String) {
os_log("%@",log:logger,type:.info,s)
}
Run Code Online (Sandbox Code Playgroud)
那么在Console.app中查看已记录的消息需要做什么?默认情况下,只.error显示类型的日志消息.
我想知道如果我在设备上运行代码而不是在模拟器中运行代码.
有关:
从Swift REPL,我可以通过执行基础导入框架模块import Foundation.
我可以在REPL上给出什么命令,它将生成可以导入的所有模块的列表?
附录:
只是要非常清楚我想要了解的内容.在REPL上,如果我输入单词"import Foundation",那么我可以访问Foundation类型,常量等.如果我输入单词"import CoreGraphics",那么我可以访问CoreGraphics.如果我安装了第三方库OptionKit,则输入"import OptionKit"可以让我使用OptionKit.这些都是可以直接从REPL导入的模块.
但是,某些模块或框架不能.举例来说,如果我键入从REPL"进口ParseOSX",我得到一个错误,即使它可以从一个独立的脚本做"进口ParseOSX".
我想要了解的是,如何使用import命令从REPL确定我可以导入的frameoworks或模块列表.
ADDENDUM2:
我做了一点搜索,似乎我从/ Library/Frameworks,OptionKit成功导入的唯一第三方框架也是唯一一个带有.swiftmodule文件的框架.所有可导入的Apple框架似乎都有自己的.swiftmodule文件,您可以通过在/Application/Xcode.app下搜索找到它们.
因此,这表明您可以在运行时仅使用.swiftmodule文件导入框架.但我不确定这一点.
我试图理解Swift中具有通用关联值的枚举的确切限制.
你可能认为它们是受支持的,因为它Optional是这种类型.这是OptionalSwift标准库中定义的代码:
enum Optional<T> : Reflectable, NilLiteralConvertible {
case None
case Some(T)
// ...
}
Run Code Online (Sandbox Code Playgroud)
似乎case成员Some具有变量类型的关联值T,对吧?
但是,在Swift中的函数编程(第87页)一书中提到,不支持这样的类型:
我们想在与Success相关的结果中定义一个通用的新枚举:
enum Result<T> { case Success(T) case Failure(NSError) }遗憾的是,当前的Swift编译器不支持通用关联值.
实际上,如果您将该代码段输入编译器,则会出现错误(error: unimplemented IR generation feature non-fixed multi-payload enum layout).
那么这里发生了什么?它只是一般不支持,但Optional作为一个特例支持?有没有办法看看Optional如何获得这种特殊支持?或者,如果其他标准库类型也获得特殊支持?
我有一个Xcode 7.3工作区,有三个项目,App,FrameworkA和FrameworkB.每个项目都有一个目标.这是iOS,因此框架目标是Cocoa Touch Frameworks,这意味着包含动态链接共享库的框架.
应用程序依赖于依赖于框架B的框架A.这些依赖关系正在工作,只要A正确链接到B的构建产品,并且应用程序正确链接并嵌入框架A和B(因为您不能有一个框架嵌入另一个框架,似乎应用程序包需要链接和嵌入直接和传递依赖.)
但这是我的问题.框架A和B具有通常的构建配置,即调试和发布.App有一个额外的构建配置LocalRelease,它由Run构建操作触发,用于构建优化的构建(如Release),但代码用开发者身份(如Debug)签名.
当我尝试用这个LocalRelease构建配置构建App时,这打破了构建,因为它打破了框架A和B的依赖关系.我相信这是因为这些框架没有LocalRelease构建配置,所以Xcode从不将它们的构建产品放入LocalRelease-iphoneos文件夹,与App一样.
所以我的狭隘问题是,如何配置构建设置,以便具有非标准构建配置名称的项目(如LocalRelease)可以依赖于仅使用标准构建配置名称的其他项目?我希望有一个简单的方法可以做到这一点,不需要添加脚本或xcconfig文件,但如果有必要,我很乐意理解为什么.
我的更广泛的问题是,引入额外的构建配置通常是一个坏主意,因为它们不允许共享工作区中项目之间的依赖项的平滑交互?我被引导定义第三个配置,因为我想要一个优化的本地构建,我不想定义一个新的方案,我希望构建类型的选择由各种构建操作(运行,配置文件,发布)表示单一计划.
但也许这是错误的做法.只要构建配置名称驱动构建产品目录路径,并且依赖项目需要在共享目录中找到彼此的构建产品,似乎向项目引入非标准构建配置名称将破坏与之的互操作依赖于其他项目.
iTunes Connect提供基于浏览器的UI,使用Apple的新版Test Flight为正在测试的应用程序添加和删除外部测试人员.
有没有办法在不使用Web UI的情况下访问此功能 - 例如,使用命令行工具?
Apple似乎没有提供以编程方式访问iTunes Connect 的官方 API.但有点谷歌搜索表明iTunes Connect是一个与JSON API对话的AngularJS应用程序.是否有任何开源项目或工作代码片段显示如何使用API?
我特别感兴趣的是管理外部测试人员,而不是自动将构建上传到iTunes Connect.
我想知道用CocoaPod包含演示项目的最佳方法是什么.特别是,我希望这是一个任何人都可以尝试使用该pod try命令的组件.
我看到两个选择:
这里Pod包含一个嵌入式项目,它使用Podfile引用pod本身.
这是通过pod lib create命令生成的目录结构和CocoaPods文档所建议的.
这里的Pod包含一个嵌入式项目,Xcode项目文件使用相对路径直接引用pod本身的资源.
这就是我在野外的各种例子中看到的,它正是我正在创作的Pod中正在运行的.
由于CocoaPods仍在不断变化,我想知道一种方式是否比另一种方式更"幸福".文件是否表明选项1已过期?或者支持选项2的代码是否过时了?两者pod try都会继续前进吗?
默认情况下(即,具有垂直滚动方向),则通过UICollectionViewFlowLayout处开始勾画出细胞中的左上,去从左至右,直到该行被填充,然后进行到下一行向下。相反,我想它在启动左下,从左向右走,直到该行被填满,然后进行下一行了。
是否可以通过子类化UIScrollViewFlowLayout来实现此目的的简单方法,还是我基本上需要从头开始重新实现该类?
苹果公司的文档上继承流布局建议,我只需要重写和重新实现自己的版本layoutAttributesForElementsInRect:, layoutAttributesForItemAtIndexPath:以及collectionViewContentSize。但这似乎并不简单。由于UICollectionViewFlowLayout不会公开其在内部进行的任何网格布局计算,因此prepareLayout我需要从其为顶部到底部布局生成的值中推断出底部到顶部布局所需的所有布局值。
我不确定这是否可能。尽管我可以重复使用它的计算,即关于哪些项目组放在同一行中,但我将需要计算新的y偏移量。为了进行计算,我将需要有关所有项目的信息,但是那些超类方法不会对此进行报告。