小编Com*_*ast的帖子

如何在Swift中检查类型是否为Optional?

如何在Swift中检查类型是否为Optional?

说我有一个PartialKeyPath类型的变量,其中:

struct Foo {
    let bar: String
    let baz: String?
}

typealias Property<Root> = (key: PartialKeyPath<Root>, value: Any?)
typealias Properties<Root> = [Property<Root>]
Run Code Online (Sandbox Code Playgroud)

现在说我遍历Properties的一个实例:

properties.forEach { prop in
    let valueType1 = type(of: prop.key).valueType
    let valueType2 = type(of: value)

    ...
Run Code Online (Sandbox Code Playgroud)

我如何在这里检查valueType1是否为Optional<valueType2>,或者它是否是其他可选样式的Optional?

到目前为止,我发现的唯一方法是非常丑陋的...

optional swift

6
推荐指数
2
解决办法
1278
查看次数

有没有办法检测iPhone是否处于反色模式?

您知道在可访问性方面,用户可以将主页按钮设置为三击并使其成为"反色模式"吗?您的应用有没有办法检测手机是否处于逆色模式?谢谢.

accessibility ios

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

CloudKit错误:无法获取PCS对象来解包字段encryptedPublicSharingKey的加密数据

在iOS 10中,我的应用程序的CloudKit功能不再起作用.完全相同的应用程序在iOS 9上工作正常.我尝试在XCode 8中构建它仍然无法正常工作.

不起作用的代码及其生成的错误如下所示.我们所做的是从公共云数据库中获取记录.我已经确认该设备上有一个新的iCloud帐户.同样的设备与iOS 9下的应用程序完美配合.我尝试重启设备并登录和退出iCloud,但仍然得到相同的错误.

请指教...

CKDatabase *publicDatabase = [[CKContainer defaultContainer] publicCloudDatabase];
CKRecordID *myRecordID = [[CKRecordID alloc] initWithRecordName:@"myRecord"];
[publicDatabase fetchRecordWithID:myRecordID completionHandler:^(CKRecord * _Nullable record, NSError * _Nullable error) {
    if(error != nil) {
        CLS_LOG(@"<ERROR> Error fetching record. Error: %@",error);
        return;
    }
    //rest of code
}];
Run Code Online (Sandbox Code Playgroud)

结果是:

Error: <CKError 0x15e7c2b0: "Internal Error" (1/5001); "Couldn't get a
PCS object to unwrap encrypted data for field
encryptedPublicSharingKey: (null)">
Run Code Online (Sandbox Code Playgroud)

cloudkit ios10

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

在XCode 8中,在给定的XCTestCase类中以特定顺序运行测试方法的方法是什么?

在XCode 8之前,您可以通过按字母顺序排列给定XCTestCase类中的测试方法的名称来使单元测试以特定顺序运行(如本答案中所述).例如,测试将运行如:testA,testB,testC,testD等.

但是在XCode 8中,情况已不再如此.例如,我将首先运行名为test1,test2,test3,test4和test4的测试方法(参见下面的屏幕截图).然后我可以重新运行,test2将在下一次运行时首先运行.

在此输入图像描述

那么......如何在XCode 8上按顺序运行测试...?

xcode unit-testing objective-c xctestcase xcode8

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

在iOS 7中未观察到UIAccessibilityInvertColorsStatusDidChangeNotification

我不确定这是iOS 7的bug还是什么.但是......我无法UIAccessibilityInvertColorsStatusDidChangeNotification上班.

所以,当我开始我的笔尖时,我这样做:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {

        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(inverted)
                                                     name:UIAccessibilityInvertColorsStatusDidChangeNotification
                                                   object:nil];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

稍后在我的代码中我收到了通知:

- (void)inverted {
    if(UIAccessibilityIsInvertColorsEnabled()) {
        NSLog(@"setting tintcolor to cyan");
        self.view.tintColor = [UIColor cyanColor];
        [self tintColorDidChange];
    } else {
        NSLog(@"setting tintcolor to red");
        self.view.tintColor = [UIColor redColor];
        [self tintColorDidChange];
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我的应用程序运行时,我通过主页按钮上的tripple-tap更改了反转颜色模式,应用程序中没有任何反应.不要在控制台上收到消息,不要改变tintColor,不要得到什么.

我在iOS 6和iOS 7上对此进行了测试.我尝试将我的构建目标设置为iOS 6.1而不是4.3,并且也没有修复它.

我尝试添加-(void)inverted;到我的界面,但没有解决它.我尝试在倒置后添加冒号,但也没有修复它,并且文档说这个通知无论如何都没有参数.

显然我做错了什么.什么?提前致谢.

iphone accessibility objective-c nsnotifications ios

4
推荐指数
1
解决办法
259
查看次数

在Swift 4中,当keypath和value的类型是通用的但是相同时,如何分配给keypath?

鉴于:

struct Foo {
    var bar: String = “”
    var baz: Int? = nil
}
let values: [Any] = [“foo”, 1337]
let fooPaths: [PartialKeyPath<Foo>] = [\Foo.bar, \Foo.baz] 
let protoFoo = Foo()
Run Code Online (Sandbox Code Playgroud)

如何创建迭代这些键路径和值的for循环,并在类型匹配两者且keypath是可写的时将值分配给键路径?

注意:它必须使用泛型来完成,因为Foo可以具有任何类型的属性(当然,除了类型Foo).

我尝试过这样的东西:

func setKeyOnRoot<Root, Value>(_ root: Root, value: Value, key: PartialKeyPath<Root>) -> Root {
    var root = root
    if let writableKey = key as? WritableKeyPath<Root, Value> {
        root[keyPath: writableKey] = value
    }
    return root
}
Run Code Online (Sandbox Code Playgroud)

但由于在调用此函数之前必须将值转换为Any,因此运行时无法看到类型Value的含义.

generics swift4

4
推荐指数
1
解决办法
1945
查看次数

你是如何逃离Angular的一个空间的?

我有一个像这样的对象:

foo = {"Foo Bar":"bar","Foo":"Bar"};
Run Code Online (Sandbox Code Playgroud)

在我的Jade模板中,我有:

p 1: {{foo.Foo Bar}}
p 2: {{foo.Foo}}
Run Code Online (Sandbox Code Playgroud)

问题是,输出是:

1: {{foo.Foo Bar}} 
2: Bar
Run Code Online (Sandbox Code Playgroud)

但它应该是:

1: bar
2: Bar
Run Code Online (Sandbox Code Playgroud)

为什么会出现这个问题?我该如何解决?

javascript node.js angularjs pug

3
推荐指数
1
解决办法
1026
查看次数

iOS发布图片可以动画GIF吗?

iOS发布图片可以动画GIF吗?如果是这样,他们会在发布时播放动画吗?只是好奇.

animated-gif ios ios7

3
推荐指数
1
解决办法
3128
查看次数

为什么 git 将本应为 750 的文件设置为 755?

在我的本地存储库中,我有一个文件模式为 550 的文件。在 .git/config 中,我的本地存储库和服务器存储库上都设置了 filemode=true。但是当我从 github 拉取文件时,文件总是显示为 775!

我对此感到非常困惑。有没有办法告诉 git 如何对文件进行权限?那么它不会像这样改变它们吗?我也很好奇,为什么 git 是这样设计的,不尊重文件权限?我意识到我可以制作一个 shell 脚本来修复它,等等,但我只是好奇。

抱歉,如果这是重复的,我找不到任何可以准确解决此问题的内容。

git permissions chmod

2
推荐指数
1
解决办法
1121
查看次数

在Java中,在静态方法中,确定调用静态方法的类的方法是什么?

假设您在Java中有一个类和一个子类:

public abstract class Car {

    public static Car getCar() {
        Car car = makeCar();
        return car;
    }

    private static Car makeCar() {
        //bunch of code that makes the car
        return car;
    }

}

public class Ferrari extends Car {

    private static makeCar() {
         //bunch of code that makes a Ferrari! Yeah!

         awesomeRide = new Car();
         return awesomeRide;
    }

}
Run Code Online (Sandbox Code Playgroud)

然后在另一个课程中你打电话:

Ferrari.getCar();
Run Code Online (Sandbox Code Playgroud)

将调用法拉利的超类getCar() makeCar()方法.法拉利不能@Override getCar()因为在Java中,静态方法无法被覆盖.

所以在Car的getCar()方法中,如何判断方法调用是否发送到法拉利类,而不是类Car?既然这是一种静态方法,我if(this instanceOf Car)显然无法做到.


编辑:正确答案(下面)告诉我,由于有人调用Car.getCar()或Ferrari.getCar(),我确实无法从Car内部判断是否正在运行getCar().

但我不知道的是,根据Java的文档,虽然静态方法不能在Java中重写,但它可以被隐藏.

隐藏和重写之间的关键区别在于,隐藏时,静态方法会在同一个类上调用 …

java class subclass

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

为什么JSON没有关联数组?

为什么JSON没有关联数组?YAML.

你不能在JSON中这样做:

{
    productsBySku: [
        12J432: {
            price: 49.99,
            qty_in_stock: 4
        },
        5X4352: {
            price: 29.99,
            qty_in_stock: 5
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

但是在YAML你可以这样做:

productsBySku:
  - 12J432: 
        price: 49.99,
        qty_in_stock: 4
  - 5X4352:
        price: 29.99,
        qty_in_stock: 5
Run Code Online (Sandbox Code Playgroud)

我在技术层面上想知道为什么这个决定可能是针对JSON做出的.

arrays json yaml associative-array

-4
推荐指数
1
解决办法
80
查看次数