小编alt*_*ser的帖子

Swift等效于Java indexOf和字符串的lastIndexOf

我来自Java.我研究了Swift文档并理解了大部分概念.

我现在寻找的是等同于Java indexOf和lastIndexOf方法来查找字符串中子字符串的位置.

我已经找到了一个使用rangeOfString并使用startIndex属性的解决方案.这看起来有助于我定义indexOf方法.

但我认为rangeOfString只从字符串的开头开始搜索.它是否正确?如果是这样,我怎样才能反向搜索(从字符串的结尾开始)?

我的意思是让fe字符串为"hello world",如果我开始搜索"l",那么我想找到位置9处的字母而不是位置2处的字母.

string swift

11
推荐指数
3
解决办法
5479
查看次数

类型约束中的多个协议

我想使用泛型类和类型约束:

class MyCustomClass<T : Equatable> {
  var a: Array<T>
  init() {
    a = Array<T>()
  }
}
Run Code Online (Sandbox Code Playgroud)

这很好.但是,如果我想使用第二个协议,会发生什么

class MyCustomClass<T : Equatable, IndexableBase> {
  var a: Array<T>
  init() {
    a = Array<T>()
  }
}
Run Code Online (Sandbox Code Playgroud)

它说初始化程序失败了,因为我必须使用2而不是1个参数.我不明白.

generics swift

7
推荐指数
2
解决办法
1798
查看次数

捕获,首选项和退出菜单项

我正在使用当前版本的SWT来构建我的应用程序,我想在Mac OS X(Yosemite)下运行它.
我现在的问题是,我无法捕获自动添加到我的应用程序中的"关于","首选项"和"退出"菜单项的点击.
我已经搜索了很多,发现以下课程对我来说非常有帮助http://www.transparentech.com/files/CocoaUIEnhancer.java.

这是我的代码来初始化它:

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;

public class Test {
  private Display display;
  private Shell shell;

  public Test(Display display) {
    this.display = display;
    initUI();
  }

  public void open() {
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
  }

  private void initUI() {
    shell = new Shell(display);
    shell.setSize(808, 599);
    shell.setText("Test");

    AboutHandler aboutHandler = new AboutHandler();
    PreferencesHandler preferencesHandler = new PreferencesHandler();
    QuitHandler quitHandler = new QuitHandler();

    CocoaUIEnhancer uienhancer = new CocoaUIEnhancer("Test");
    uienhancer.hookApplicationMenu(display, quitHandler, aboutHandler, …
Run Code Online (Sandbox Code Playgroud)

java cocoa swt menu

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

如何创建用于写入的文本文件

我在文件中写文本时遇到问题.到目前为止我所做的是以下内容:我有一个字符串,其中包含要存储的文本,文件名也是一个字符串.

let someText = "abcd"
let fileName = "file:///xxx"
Run Code Online (Sandbox Code Playgroud)

当然"xxx"是文档目录下的.txt文件,因此应该可以编写.
然后我发现我可以使用字符串的write方法.但是对于这个调用我需要文件名作为url所以我有这段代码:

let fileUrl = URL(string: fileName)
do {
    try someText.write(to: fileUrl, atomically: false, encoding: String.Encoding.utf8)
}
catch { }
Run Code Online (Sandbox Code Playgroud)

如果我启动我的应用程序,那么我将收到错误"文件xxx不存在".好的,这是正确的,因为没有创建文件.我认为write方法会自动执行,但似乎不是这样.
这就是我不知道如何解决这个问题的重点!

我正在使用Xcode 8 + Swift 3.

+++ EDIT +++

我试着解释一下我正在寻找什么.
假设我有两个任务:第一个任务构建文件名并将其存储在数据库中.这就是我使用字符串的原因:

var fileName = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).path
if (!fileName.hasSuffix("/")) {
    fileName += "/"
}
fileName += "file.txt"
Run Code Online (Sandbox Code Playgroud)

如您所见,此时未创建该文件,因为我只需要此任务中的名称.

好然后第二个任务.它必须从数据库中选择一个特定的文件名,并将其附加到file:// scheme:

let fileName = "file://" + fileNameFromDatabase
Run Code Online (Sandbox Code Playgroud)

然后使用上面的代码编写文本.
很明显,此任务中不存在该文件,因为我只有该名称.这就是为什么我认为write方法的错误信息是正确的.
我现在正在寻找的是一步创建文件/写文本的可能性.

file swift

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

在PHPUnit中声明布尔值/字符串的函数结果

我正在使用PHPUnit自动测试我的应用程序。我想断言可以返回布尔值或字符串的函数调用的结果。我的代码如下所示:

$myExample = new MyExample();
$value = $myExample->getValue();
if ($value !== false) {
  assertNotNull($value);
  assertFalse(empty($value));
}
Run Code Online (Sandbox Code Playgroud)

但是还可以检查该方法是否成功执行吗?“ assertTrue($ value)”是否正确?

phpunit assertion

5
推荐指数
2
解决办法
4154
查看次数

在bash中查找带空格的文件

我想在文件夹中搜索文件名中有空格的文件,fe

/vol1/apache2/application/current/Test 1.pdf
/vol1/apache2/application/current/Test 2.pdf
Run Code Online (Sandbox Code Playgroud)

我知道有一个 find 命令,但我无法找出列出所有这些文件的正确参数。

bash find

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

如何忽略 PHP_CodeSniffer 中的一些错误或警告

我正在使用 PHP_CodeSniffer 来分析我的 php 代码。问题是我的应用程序的代码非常复杂(大约 10,000 个文件)并且有点旧(大约 15 年),因此它不遵循 PSR 等标准。
这就是 CodeSniffer 生成非常大的报告的原因。因为解决所有“问题”需要太多时间,我正在考虑忽略一些事情,fe

Class name must begin with a capital letter
Run Code Online (Sandbox Code Playgroud)

或者

Opening brace of a class must be on the line after the definition
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉 CodeSniffer 在创建报告时忽略此类错误?

php

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

如何将应用程序图标包含到我的 Xcode 项目中

我在包含新的应用程序图标时遇到问题。我已经做的是以下内容:

我存档并验证了我的应用程序,并得到了分辨率为 120x120 px、152x152 px 和 167x167 px 的图标丢失的信息。所以我创建了那个 PNG 文件并将它存储在 Finder 的一个文件夹中。
然后我在项目导航器(Xcode 8.2)中选择根节点,转到“常规”选项卡并打开“应用程序图标和启动图像”披露。在那里我点击了箭头图标。资产管理器显示为选中条目“AppIcon”。到目前为止一切顺利。
现在文档说我必须将我的 PNG 文件从 Finder 拖放到该资产表中。

但我的问题是我是屏幕阅读器用户,所以我无法使用鼠标来处理此类操作。这就是为什么我想问是否有使用键盘快捷键或导入菜单的替代方法,或者我是否可以通过使用文本编辑器编辑 Xcode 项目文件来手动包含 PNG 文件?非常感谢您的帮助!

xcode icons screen-readers ios

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

使用“开放”和“公开”

我已经阅读了有关新修饰符“open”和“fileprivate”的文档。但有两件事我不明白:

  1. 为什么不能将协议或扩展声明为“开放”?这是否意味着不可能在模块之外使用这些东西?
  2. 如果我不想为模块构建类,而是为通用应用程序构建类,那么我是否应该将我的类和方法声明为“开放”,或者仅将它们保留为“公共”是一个好习惯吗?

modifiers swift swift3

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

C++中数组的指针

我在C++中使用指针时遇到了一些问题.我用不同大小的数组实现了三种方法,但计算方法相同.所以我决定提取计算并将它们放在一个需要数组的新方法中.但这不起作用,我不知道如何修改我的程序.

void method1() {
  float a[3][3];
  calculate(a, 3);
}

void method2() {
  float a[4][4];
  calculate(a, 4);
}

void method3() {
  float a[5][5];
  calculate(a, 5);
}

void calculate(float *param[], int n) {
  // Code
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用全局变量或向量等但我需要这个结构中的逻辑.

这是编译器错误:

Test.cpp: In function 'void method1()':
Test.cpp:7:16: error: cannot convert 'float (*)[3]' to 'float**' for argument '1' to 'void calculate(float**, int)'
Test.cpp: In function 'void method2()':
Test.cpp:12:16: error: cannot convert 'float (*)[4]' to 'float**' for argument '1' to 'void calculate(float**, int)'
Test.cpp: In function 'void …
Run Code Online (Sandbox Code Playgroud)

c++ arrays methods pointers

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

标签 统计

swift ×4

arrays ×1

assertion ×1

bash ×1

c++ ×1

cocoa ×1

file ×1

find ×1

generics ×1

icons ×1

ios ×1

java ×1

menu ×1

methods ×1

modifiers ×1

php ×1

phpunit ×1

pointers ×1

screen-readers ×1

string ×1

swift3 ×1

swt ×1

xcode ×1