我来自Java.我研究了Swift文档并理解了大部分概念.
我现在寻找的是等同于Java indexOf和lastIndexOf方法来查找字符串中子字符串的位置.
我已经找到了一个使用rangeOfString并使用startIndex属性的解决方案.这看起来有助于我定义indexOf方法.
但我认为rangeOfString只从字符串的开头开始搜索.它是否正确?如果是这样,我怎样才能反向搜索(从字符串的结尾开始)?
我的意思是让fe字符串为"hello world",如果我开始搜索"l",那么我想找到位置9处的字母而不是位置2处的字母.
我想使用泛型类和类型约束:
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个参数.我不明白.
我正在使用当前版本的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) 我在文件中写文本时遇到问题.到目前为止我所做的是以下内容:我有一个字符串,其中包含要存储的文本,文件名也是一个字符串.
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方法的错误信息是正确的.
我现在正在寻找的是一步创建文件/写文本的可能性.
我正在使用PHPUnit自动测试我的应用程序。我想断言可以返回布尔值或字符串的函数调用的结果。我的代码如下所示:
$myExample = new MyExample();
$value = $myExample->getValue();
if ($value !== false) {
assertNotNull($value);
assertFalse(empty($value));
}
Run Code Online (Sandbox Code Playgroud)
但是还可以检查该方法是否成功执行吗?“ assertTrue($ value)”是否正确?
我想在文件夹中搜索文件名中有空格的文件,fe
/vol1/apache2/application/current/Test 1.pdf
/vol1/apache2/application/current/Test 2.pdf
Run Code Online (Sandbox Code Playgroud)
我知道有一个 find 命令,但我无法找出列出所有这些文件的正确参数。
我正在使用 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 在创建报告时忽略此类错误?
我在包含新的应用程序图标时遇到问题。我已经做的是以下内容:
我存档并验证了我的应用程序,并得到了分辨率为 120x120 px、152x152 px 和 167x167 px 的图标丢失的信息。所以我创建了那个 PNG 文件并将它存储在 Finder 的一个文件夹中。
然后我在项目导航器(Xcode 8.2)中选择根节点,转到“常规”选项卡并打开“应用程序图标和启动图像”披露。在那里我点击了箭头图标。资产管理器显示为选中条目“AppIcon”。到目前为止一切顺利。
现在文档说我必须将我的 PNG 文件从 Finder 拖放到该资产表中。
但我的问题是我是屏幕阅读器用户,所以我无法使用鼠标来处理此类操作。这就是为什么我想问是否有使用键盘快捷键或导入菜单的替代方法,或者我是否可以通过使用文本编辑器编辑 Xcode 项目文件来手动包含 PNG 文件?非常感谢您的帮助!
我已经阅读了有关新修饰符“open”和“fileprivate”的文档。但有两件事我不明白:
我在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)