角色(有两个女人,一个女孩和一个男孩的家庭)编码如下:
U+1F469 WOMAN,
?U+200D ZWJ,
U+1F469 WOMAN,
U+200D ZWJ,
U+1F467 GIRL,
U+200D ZWJ,
U+1F466 BOY
所以它非常有趣地编码; 单元测试的完美目标.然而,斯威夫特似乎不知道如何对待它.这就是我的意思:
"???".contains("???") // true
"???".contains("") // false
"???".contains("\u{200D}") // false
"???".contains("") // false
"???".contains("") // true
Run Code Online (Sandbox Code Playgroud)
所以,斯威夫特说它包含自己(好)和一个男孩(好!).但它说它不包含女人,女孩或零宽度木匠.这里发生了什么事?斯威夫特为什么知道它包含一个男孩而不是女人或女孩?我能理解它是否将它视为一个单一的角色并且只识别它包含它自己,但事实上它有一个子组件,没有其他人困惑我.
如果我使用类似的东西,这不会改变"".characters.first!.
更令人困惑的是:
let manual = "\u{1F469}\u{200D}\u{1F469}\u{200D}\u{1F467}\u{200D}\u{1F466}"
Array(manual.characters) // ["?", "?", "?", ""]
Run Code Online (Sandbox Code Playgroud)
即使我将ZWJ放在那里,它们也不会反映在字符数组中.接下来是一个小小的说法:
manual.contains("") // false
manual.contains("") // false
manual.contains("") // true
Run Code Online (Sandbox Code Playgroud)
所以我得到了与字符数组相同的行为...这是非常烦人的,因为我知道数组的样子.
如果我使用类似的东西,这也不会改变"".characters.first!.
我在我的功能中有这些定义
class MyClass {
func myFunc() {
let testStr = "test"
let testStrLen = countElements(testStr)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我将'testStr'和'testStrLen'移动到类级别,它将无法编译.它说'MyClass.Type没有名为'testStr'的成员.
class MyClass {
let testStr = "test"
let testStrLen = countElements(testStr)
func myFunc() {
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?我不想每次都计算一次不断的"测试".
根据我对以下评论的理解,我需要这样做:
class MyClass {
let testStr = "test"
let testStrLen = countElements("test")
func myFunc() {
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法我不需要输入/输入"test"两次?谢谢.
使用XCode 5.1,会出现一个新警告.它让我明白 - 显然 -我做错了什么.
我们的想法是拥有一个对象(一个模型),它是从原始类继承的可变版本.这样的想法是要打开的是一个性质readonly,以readwrite
@interface Car : NSObject
@property (strong, readonly) NSString *name;
@end
@interface MutableCar : Car
@property (strong, readwrite) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)
这些需要在单独的文件中(如两个普通类).
它给出了这个警告:
Auto property synthesis will not synthesize property 'name' because it is 'readwrite' but it will be synthesized 'readonly' via another property
Run Code Online (Sandbox Code Playgroud)
所以我想知道什么是正确的解决方案来做类似的事情,如果它甚至可能的话.如果需要编写访问器并避免使用自动合成等.请准确,并用文档或其他任何方式支持您的答案.
我需要访问文件夹中的每个文件,包括嵌套文件夹中存在的文件.示例文件夹可能如下所示.
animals/
-k.txt
-d.jpg
cat/
-r.txt
-z.jpg
tiger/
-a.jpg
-p.pdf
dog/
-n.txt
-f.jpg
-p.pdf
Run Code Online (Sandbox Code Playgroud)
假设我想在不是文件夹的"动物"中的每个文件上运行一个进程.迭代文件夹"animals"及其所有子文件夹访问每个文件的最佳方法是什么?
谢谢.
我目前在我的一个应用程序中有以下代码行.这很简单UIAlertView.但是,从iOS 8开始,现在不推荐使用它:
let alertView = UIAlertView(title: "Oops!", message: "This feature isn't available right now", delegate: self, cancelButtonTitle: "OK")
Run Code Online (Sandbox Code Playgroud)
如何更新此功能以使用iOS 8+?我相信我必须改变一些东西UIAlertCotroller,虽然我不太清楚是什么.
我是iPhone应用程序开发的新手.我想用2个按钮设计一个警报视图:OK和Cancel.当用户触摸OK按钮时,我将打印出一条消息hello.当他们触摸Cancel按钮时,我会打印出来cancel.
请帮忙; 我该怎么做呢?
什么是一个func与返回类型Never呢?
例如:
func addNums() -> Never {
//my code
}
Run Code Online (Sandbox Code Playgroud)
如果我Void像这样保留返回类型会有什么区别?
func addNums() -> Void {
//my code
}
Run Code Online (Sandbox Code Playgroud)
假设我想处理fatalError(如dpassage所说); 以下代码就足够了:
print("its an error")
return
Run Code Online (Sandbox Code Playgroud)
Apple文档说:
不正常返回的函数的返回类型,即没有值的类型.
资料来源:开发商
这不是一个重复的问题,在Swift中何时以及如何使用@noreturn属性?,我希望得到更详细的答案,需要以下细节:
关于两者Never和Void返回类型之间差异的实际例子
我们应该采用这些回报类型的条件.
返回类型也有可能为零; 我也需要对这个功能进行比较
答案应该集中在差异上.
有没有办法获得通知,回调或其他方法来调用方法,只要UIView变得对用户可见,即当UIScrollview是某些UIViews的超级视图时,这样的UIView的ViewController将得到通知它的视图现在对用户可见了吗?
我知道可能的,但不是那么优雅的解决方案,检查ScrollView滚动的位置(通过UIScrollViewDelegate方法)并计算其中一个子视图是否可见...
但我正在寻找更通用的方式这样做.
在我的应用程序中我需要显示选择文件对话框,我正在使用允许选择文件的NSOpenPanel,代码如下所示,
- (IBAction)sendFileButtonAction:(id)sender{
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
// Enable the selection of files in the dialog.
[openDlg setCanChooseFiles:YES];
// Enable the selection of directories in the dialog.
[openDlg setCanChooseDirectories:YES];
// Display the dialog. If the OK button was pressed,
// process the files.
if ( [openDlg runModalForDirectory:nil file:nil] == NSOKButton )
{
// Get an array containing the full filenames of all
// files and directories selected.
NSArray* files = [openDlg filenames];
// Loop through all the files and …Run Code Online (Sandbox Code Playgroud) 这听起来微不足道,但我注意到一些奇怪.我为UISwitch的Value Changed事件连接了一个处理程序.我期望的是每次调用处理程序时,开关的值都会改变.但是,这其实并不总是如此.如果您快速打开/关闭开关,则可以使用交换机的SAME状态连续调用处理程序(在我的特定应用程序中,这是一个问题).所以我想知道是否有其他人注意到这种行为,并找到了一个很好的解决方案.
swift ×4
cocoa-touch ×3
ios ×3
cocoa ×2
macos ×2
objective-c ×2
directory ×1
emoji ×1
iphone ×1
iteration ×1
nsopenpanel ×1
properties ×1
string ×1
swift2 ×1
types ×1
uiscrollview ×1
uiswitch ×1
uiview ×1
unicode ×1
warnings ×1
xcode ×1
xcode5.1 ×1
xcode7 ×1