除了针对所有RTL语言测试语言代码之外,还有办法识别RTL(从右到左)语言吗?
由于API 17+为RTL和LTR提供了多种资源,我认为应该有一种方法,至少从API 17开始.
Windows手机模拟器需要运行Hyper-V,但Android模拟器又需要英特尔硬件加速管理器(HAXM),它不能容忍Hyper-V.
是否有办法保留Hyper-V并暂时禁用它以使英特尔HAXM运行,而无需重新启动?
我运行Windows Hyper-V管理器并停止服务器(这涉及停止所有服务),但这没有帮助:Android模拟器仍然拒绝启动.
我调用了services.msc来查看某些Hyper-V服务是否仍在运行.实际上,所有以Hyper-V开头的服务都没有运行.我也停止了HV Host服务(Microsoft Hypervisor Host服务),但它仍然没有帮助!
有任何想法吗?
我的项目声明了两种语言:英语作为开发,法语作为附加.它也Use Base Internationalization打勾了.
当我在Xcode 9中本地化一个Strings文件时,我通常将内容移动到法语,然后Base在Localization列表中打勾.这给出了两个新的Strings文件的副本Base.lproj(包含英文文本),另一个用于fr.lproj,因此英语将用于法语以外的语言.
使用Xcode 10,Localization它没有列出Base,所以Base.lproj除了在Xcode 9中进行本地化之外我无法看到使用方法,然后在已创建基本文件的情况下恢复为Xcode 10.
这是一个错误,或者这是它的意思?
更新20Sep18.
现在有一个XCode 10的官方版本,即使Use Base Internationalization旗帜仍然存在,问题仍然存在.如果这不是一个错误,有人可以解释发生了什么?应该有Apple文档来讨论这个问题.
当本地化时,BTW,a storyboard或nib静止列表Base.只有一个Strings文件似乎有问题.
以下代码(编译时没有错误)检索特定 CaseIterable 枚举类型中元素的索引
public enum MyEnum : CaseIterable {
case ONE, TWO, THREE
public func ordinal() -> Int? {
return MyEnum.allCases.firstIndex(of: self)
}
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个通用函数来处理所有 CaseIterable 枚举。
如果我尝试:
public extension CaseIterable {
public func ordinal() -> Int? {
return CaseIterable.allCases.firstIndex(of: self)
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个编译器错误“ Member 'allCases' cannot be used on value of protocol type 'CaseIterable'; use a generic constraint instead”,这是非常合乎逻辑的,因为实际的枚举类型未知”。
当我尝试时CaseIterable<T>,我收到另一个错误,因为 CaseIterable 未声明为泛型类型。
有办法吗?
以下代码几乎是Apple Documentation的精确复制品,编译时没有错误:
guard let firstItem = (rawItems! as? Array<Dictionary<String, Any>>)?.first else {
throw AnError()
}
let identityRef = firstItem[kSecImportItemIdentity as String]
as! SecIdentity? // !!!
guard let identity = identityRef else {
throw AnError()
}
Run Code Online (Sandbox Code Playgroud)
标有的行!!!包含强制向下转换,而替换as!为as显然会导致编译错误'Any?' is not convertible to 'SecIdentity?'...确实SecIdentity是一个类,Any甚至可能不是一个类。
我真正无法解释的是以下内容。如果我尝试使代码更安全,请使用此
guard let idenity = firstItem[kSecImportItemIdentity as String] as? SecIdentity
else {
throw AnError()
}
Run Code Online (Sandbox Code Playgroud)
或这个
guard let idenityRef = firstItem[kSecImportItemIdentity as String] as? SecIdentity? …Run Code Online (Sandbox Code Playgroud) 以下Swift函数应该使用指定的'tintColor'为灰度图像'greyImage'着色:
import UIKit
func colorizeImage(greyImage : UIImage, tintColor : UIColor) -> UIImage? {
let colorMatrixFilter = CIFilter(name: "CIColorMatrix")
var r:CGFloat = 0
var g:CGFloat = 0
var b:CGFloat = 0
var a:CGFloat = 0
tintColor.getRed(&r, green:&g, blue:&b, alpha:&a)
colorMatrixFilter.setDefaults()
colorMatrixFilter.setValue(greyImage, forKey:"inputImage") //kCIInputImageKey)
colorMatrixFilter.setValue(CIVector(x:r, y:0, z:0, w:0), forKey:"inputRVector")
colorMatrixFilter.setValue(CIVector(x:0, y:g, z:0, w:0), forKey:"inputGVector")
colorMatrixFilter.setValue(CIVector(x:0, y:0, z:b, w:0), forKey:"inputBVector")
colorMatrixFilter.setValue(CIVector(x:0, y:0, z:0, w:a), forKey:"inputAVector")
if let ciImage = colorMatrixFilter.outputImage {
return UIImage(CIImage: ciImage);
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
颜色为UIColor.orangeColor()(r = 1,g = 0.5,b …
我有两个应用程序访问 iCloud。第一个是基于文档的应用程序,通过 UIDocument/NSDocument 类使用 iCloud 文件夹,无需 CloudKit。相反,第二个应用程序使用 CloudKit 通过 cloudkit 数据库而不是 iCloud 文件夹访问数据。
当我禁用 iCloud 驱动器时,第一个应用程序会从列表中消失,但第二个应用程序仍然存在,这表明对 iCloud 的访问仍然可用。
但是,当 iCloud 驱动器被禁用时,CKContainer.accountStatus 返回“noAccount”,即使我已登录。当我忽略它并运行查询时,它不会返回任何记录。
iCloud 驱动器占用大量设备存储空间,因此一些用户可能会选择禁用它。出于这个原因,我更喜欢访问 iCloud,而不是使用 iCloud 驱动器。有办法吗?
顺便说一句,iCloud 文档对 CloudKit 和 iCloud Drive 进行了强烈区分,这可能被解释为 iCloud 驱动器的存在对于 iCloud 数据库访问并不重要的另一个证据。
这并不是纯粹的好奇心,我可能会误解一些关于Swift中弱引用的东西。
假设我从View Controller创建一个类,并将其引用传递给初始化程序:
class = MyClass(vc: self)
Run Code Online (Sandbox Code Playgroud)
由于情节提要和窗口已经保留了对该View Controller的引用,因此MyClass对它的弱引用似乎是合乎逻辑的(出于类似原因,默认情况下,在IB中创建的所有引用都是弱的):
class MyClass: NSObject {
private weak var viewController: UIViewController
init(vc: UIViewController) {
self.viewController = vc
super.init
}
func setViewController(_ vc: UIViewController) {
self.viewController = vc
}
...
}
Run Code Online (Sandbox Code Playgroud)
但是,此代码会产生编译错误,因为viewController变量不是可选的。所以我必须加'!' 查看viewController声明并删除初始化程序,仅留下setViewController看起来不太自然的内容。
禁止非可选的弱数据的背后原因是什么?
以下结构编译无错误:
struct AIEvaluation<T> : CustomDebugStringConvertible where T: CustomDebugStringConvertible {
var param: T
var value: Double
var debugDescription: String {
return param.debugDescription + ": " + String(format: "%.2f", value)
}
}
Run Code Online (Sandbox Code Playgroud)
[AIEvalution<T>]是否可以为T 仍然是泛型类型的数组编写扩展?
尝试了以下方法:
extension Array where Element == AIEvaluation {...}
extension Array where Element == AIEvaluation<T> {...}
extension Array where Element == AIEvaluation<T> where T:CustomDebugStringConvertible {...}
extension <T:CustomDebugStringConvertible> Array where Element == AIEvaluation<T> {...}
Run Code Online (Sandbox Code Playgroud)
和别的。还尝试重新定义AIEvaluation为一个类。任何时候我遇到(不同的)编译错误。
我使用Amazon AppStore发布了我的应用程序,但InApp Testing库仍将PurchasingService.IS_SANDBOX_MODE设置为true.
我没有使用亚马逊设备,这可以解释它为什么会发生.