小编Mit*_*oto的帖子

如何在Swift中使用Objective-C枚举

我在Objective-C文件和Swift文件中有2个枚举定义.

Japanese.h

typedef enum {
  JapaneseFoodType_Sushi = 1,
  JapaneseFoodType_Tempura = 2,
} JapaneseFoodType;
Run Code Online (Sandbox Code Playgroud)

US.swift

enum USFoodType {
  case HUMBERGER;
  case STEAK;
}
Run Code Online (Sandbox Code Playgroud)

我们知道,我可以像下面这样使用Objective-C枚举;

Japanese.m

- (void)method {
  JapaneseFoodType type1 = JapaneseFoodType_Sushi;
  JapaneseFoodType type2 = JapaneseFoodType_Tempura;
  if (type1 == type2) {// this is no problem
  }
}
Run Code Online (Sandbox Code Playgroud)

但我不能在Swift文件中使用Objective-C枚举,如下所示;

  func method() {
    var type1: USFoodType = USFoodType.HUMBERGER// no problem
    var type2: USFoodType = USFoodType.HUMBERGER// no problem
    if type1 == type2 {

    }

    var type3: JapaneseFoodType = JapaneseFoodType_Sushi// no problem
    var type4: JapaneseFoodType …
Run Code Online (Sandbox Code Playgroud)

swift

36
推荐指数
2
解决办法
2万
查看次数

Swift 1.2(Xcode 6.3)删除了xor'^'运算符的Bool值?

Xcode 6.3上的示例代码...

var str1 = ""
var str2 = ""
if str1.isEmpty ^ str2.isEmpty {
  // do something.
}
Run Code Online (Sandbox Code Playgroud)

显示以下错误.

'^' is unavailable: use the '!=' operator instead
Run Code Online (Sandbox Code Playgroud)

我在Apple文档中找不到该规范.这个规范(我必须把它搞砸)?

xcode ios swift xcode6.3

16
推荐指数
2
解决办法
6474
查看次数

'array'不可用:请从懒惰序列构造一个数组:Array(...)

我将Xcode更新为9 beta,我已将我的代码修改为swift 2.

现在,我有一个错误"'数组'不可用:请从你的懒惰序列构建一个数组:Array(...)"在下面的代码中.

var dic: [String: String] = Dictionary<String, String>(minimumCapacity: 8)
dic.values.array// error
Run Code Online (Sandbox Code Playgroud)

我该怎么写而不是这段代码?

Array(dic.values)
Run Code Online (Sandbox Code Playgroud)

这段代码是对的吗?

我找不到关于LazyMapCollection的Apple文档.谢谢.

arrays xcode swift

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

如何在Swift中声明volatile变量

我想从Objective-C代码转换为Swift,如下所示;

int sum = 0;
x = 1;
for (int i = 0; i < 100; i++) {
    sum += x;
}
Run Code Online (Sandbox Code Playgroud)

x可以从其他线程访问.所以x被声明为volatile变量.

volatile int x;
Run Code Online (Sandbox Code Playgroud)

我应该如何在Swift中编写这段代码?

swift

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

Bug或Spec更改(Twitter API 1.1)

在我的节点应用程序项目中,我已将Twitter API从v1.0迁移到v1.1.我在日志文件中发现了一些错误.

错误

{"message":"Could not authenticate you","code":32}
Run Code Online (Sandbox Code Playgroud)

原因

如果发布数据(到1.1/status/update)包括......,则会发生此错误

  • !
  • "
  • (
  • )
  • *

我修补了node-oauth的node_modules/oauth/lib/oauth.js(仅使用了node-twitter)...

327   if( (method == "POST" || method == "PUT")  && ( post_body == null && extra_params != null) ) {
328     post_body= querystring.stringify(extra_params);
329   }
Run Code Online (Sandbox Code Playgroud)

 327   if( (method == "POST" || method == "PUT")  && ( post_body == null && extra_params != null) ) {
 328     post_body= querystring.stringify(extra_params);
+331     post_body= post_body.replace(/\!/g, "%21")
+332                         .replace(/\'/g, "%27")
+333                         .replace(/\(/g, "%28")
+334                         .replace(/\)/g, "%29")
+335 …
Run Code Online (Sandbox Code Playgroud)

twitter oauth node.js

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

如何检查订阅项的到期时间

IabHelper的QueryInventoryFinishedListener尚未返回过期的订阅项.

另一方面,Google Play结算图书馆的PurchaseHistoryResponseListener似乎会收到所有购买的商品,其中包括过期商品.

在Google Play结算库中,我们必须检查PurchaseHistoryResponseListener的购买日期和商品的每个到期日期?

android google-play play-billing-library

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

奥利奥:如何在源代码中找到所有受限制的系统调用?

https://android-developers.googleblog.com/2017/07/seccomp-filter-in-android-o.html

正如本文中的"seccomp过滤器"部分所述,

Android O的seccomp过滤器会阻止某些系统调用,例如swapon/swapoff,这些调用已经涉及某些安全攻击,以及关键控制系统调用,这对应用程序无用.总共271个过滤器块17在臂64中系统调用,70个在臂36中.

现在,一些系统调用被阻止并抛出错误signal 31 (SIGSYS), code 1 (SYS_SECCOMP), fault addr -------- Cause: seccomp prevented call to disallowed system call 55.

但我无法在arm64和70系统调用中找到上面的17个系统调用列表.哪些系统调用受到限制?我怎样才能找到导致崩溃的系统调用?

编辑:

似乎这里生成了此错误消息.

https://github.com/aosp-mirror/platform_system_core/blob/master/debuggerd/libdebuggerd/tombstone.cpp#L96

  } else if (si->si_signo == SIGSYS && si->si_code == SYS_SECCOMP) {
    cause = StringPrintf("seccomp prevented call to disallowed %s system call %d", ABI_STRING,
                         si->si_syscall);
  }
Run Code Online (Sandbox Code Playgroud)

android system-calls android-8.0-oreo android-8.1-oreo

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

如何在Java中像Swift一样用构造函数实现枚举?

例如,我们有Java代码如下;

enum Job {
    NINJA(3000000){
        public void attack() {
            //use Shuriken
        }
    },
    SAMURAI(4000000){
        public void attack() {
            //use Sword
        }
    };
    public final int salary;
    public abstract void attack();
    private Job(int salary) {
        this.salary = salary;
    }
}
Run Code Online (Sandbox Code Playgroud)

在Swift中,我认为我们不能定义构造函数并且有任何枚举方法.

我发现在下面的Swift代码中我们可以有类似的结构,但是没有任何方法.

class Job {
    class Store {
        let salary : Int
        init(int salary) {
            self.salary = salary
        }
    }
    class var NINJA: Store{
        return Store(3000000)
    }
    class var SAMURAI: Store{
        return Store(4000000)
    }
}
// Job.NINJA.salary
Run Code Online (Sandbox Code Playgroud)

当然,我知道Swift枚举可以拥有自己的属性.

但是如果在下列情况下你有更多的属性,我们必须在每个属性上有这么多的开关.我认为这不聪明.

enum Job …
Run Code Online (Sandbox Code Playgroud)

java swift

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