小编jtb*_*des的帖子

什么是"致命错误:在展开可选值时意外发现nil"是什么意思?

我的Swift程序崩溃了EXC_BAD_INSTRUCTION,这个错误.它是什么意思,我该如何解决?

致命错误:在展开Optional值时意外发现nil


这篇文章旨在收集"意外发现的零"问题的答案,因此它们并不分散且难以找到.随意添加自己的答案或编辑现有的维基答案.

error-handling exception swift

390
推荐指数
7
解决办法
35万
查看次数

如何在Swift中创建NS_OPTIONS样式的位掩码枚举?

在Apple关于与C API交互的文档中,他们描述了NS_ENUM以Swift枚举方式导入标记的C风格枚举的方式.这是有道理的,因为Swift中的枚举很容易作为enum值类型提供,所以很容易看到如何创建自己的.

更进一步,它说这是关于NS_OPTIONS标记的C风格选项:

Swift还导入标有NS_OPTIONS宏的选项.而选项的行为类似于进口枚举,选项还可以支持一些位操作,如&,|~.在Objective-C中,表示使用常量零(0)设置的空选项.在Swift中,用于nil表示没有任何选项.

鉴于optionsSwift中没有值类型,我们如何创建一个C-Style选项变量来使用?

bitwise-operators ios swift

128
推荐指数
5
解决办法
4万
查看次数

对齐UIToolBar项目

我有三个UIBarButtonItem创建如下.它们左对齐,我想对齐中心,所以右侧没有间隙.我没有看到对齐属性UIToolBar.还有另一种方法来实现这一目标吗?

//create some buttons
UIBarButtonItem *aboutButton = [[UIBarButtonItem alloc] initWithTitle:@"About" style:UIBarButtonItemStyleBordered target:self action:@selector(showAbout:)];
[toolbar setItems:[NSArray arrayWithObjects:settingsButton,deleteButton,aboutButton,nil]];
//Add the toolbar as a subview to the navigation controller.
[self.navigationController.view addSubview:toolbar];
Run Code Online (Sandbox Code Playgroud)

cocoa-touch uitoolbar ios

112
推荐指数
4
解决办法
6万
查看次数

如何在Python中获得布尔值的相反(否定)?

对于以下示例:

def fuctionName(int, bool):
    if int in range(...):
        if bool == True:
            return False
        else:
            return True
Run Code Online (Sandbox Code Playgroud)

有没有办法跳过第二个if语句?只是告诉计算机返回布尔值的反面bool

python boolean

72
推荐指数
4
解决办法
12万
查看次数

(x - x)对于双精度是否总是正零,或者有时负零?

如果xdouble,则(x - x)保证是+0.0,也可能有时-0.0(取决于标志x)?

java floating-point

68
推荐指数
2
解决办法
3860
查看次数

Swift中何时需要参数标签?

在回答这个问题时,我们发现了一个调用标签是必需的init.这在Swift中是正常的.

class Foo {
    init(one: Int, two: String) { }
}

let foo = Foo(42, "Hello world") // Missing argument labels 'one:two:' in call
Run Code Online (Sandbox Code Playgroud)

然而,陌生人的力量在起作用:

extension Foo {
    func run(one: String, two: [Int]) { }
}

foo.run(one: "Goodbye", two: []) // Extraneous argument label 'one:' in call
Run Code Online (Sandbox Code Playgroud)

要在此处使用参数标签,必须明确声明.

我没有在文档中看到非常详尽的解释所有这些内容.哪些类/实例/全局函数是必需的参数标签?是否始终使用参数标签导出和导入Obj-C方法?

syntax swift

63
推荐指数
5
解决办法
3万
查看次数

为什么在for循环中允许任意目标表达式?

我不小心写了这样的代码:

foo = [42]
k = {'c': 'd'}

for k['z'] in foo:  # Huh??
    print k
Run Code Online (Sandbox Code Playgroud)

但令我惊讶的是,这不是语法错误.相反,它打印{'c': 'd', 'z': 42}.

我的猜测是代码翻译成字面意思:

i = iter(foo)
while True:
    try:
        k['z'] = i.next()  # literally translated to assignment; modifies k!
        print k
    except StopIteration:
        break
Run Code Online (Sandbox Code Playgroud)

但是......为什么语言允许这样做?我希望在for-stmt的目标表达式中只允许使用单个标识符和标识符元组.是否存在实际有用的情况,而不仅仅是一个奇怪的问题?

python for-loop language-lawyer

58
推荐指数
4
解决办法
2899
查看次数

如何从Javascript调用Objective-C?

我有一个WebView,我想从JavaScript调用Objective-C中的一个视图.有人知道我怎么做吗?


我的ViewController中有这个代码:

- (BOOL)webView:(UIWebView *)webView2 
 shouldStartLoadWithRequest:(NSURLRequest *)request 
 navigationType:(UIWebViewNavigationType)navigationType {

 NSString *requestString = [[request URL] absoluteString];
 NSArray *components = [requestString componentsSeparatedByString:@":"];

 if ([components count] > 1 && 
  [(NSString *)[components objectAtIndex:0] isEqualToString:@"myapp"]) {
  if([(NSString *)[components objectAtIndex:1] isEqualToString:@"myfunction"]) 
  {

   NSLog([components objectAtIndex:2]); [[Airship shared] displayStoreFront]; //<- This is the code to open the Store
   NSLog([components objectAtIndex:3]); // param2
   // Call your method in Objective-C method using the above...
  }
  return NO;
 }

 return YES; // Return YES to make sure regular navigation works as …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch uiwebview

41
推荐指数
3
解决办法
5万
查看次数

使用swift更新到Xcode 6 beta 4后获取dyld_fatal_error

我刚刚下载了Xcode 6 beta 4,我的swift项目编译没有错误,但在它到达我的代码之前,我得到一个dyld_fatal_error就在调用堆栈的开头.

调用堆栈

和带有nop指令的汇编代码中的断点

断点

我得到的控制台错误是

dyld: lazy symbol binding failed: Symbol not found: __TFSsa6C_ARGVGVSs13UnsafePointerGS_VSs4Int8__
  Referenced from: /Users/username/Library/Developer/Xcode/DerivedData/Sudoku-dhrdonaeqzsgcvewndimxbbsltnc/Build/Products/Debug/Sudoku.app/Contents/MacOS/Sudoku
  Expected in: /Users/username/Library/Developer/Xcode/DerivedData/Sudoku-dhrdonaeqzsgcvewndimxbbsltnc/Build/Products/Debug/Sudoku.app/Contents/MacOS/../Frameworks/libswift_stdlib_core.dylib

dyld: Symbol not found: __TFSsa6C_ARGVGVSs13UnsafePointerGS_VSs4Int8__
  Referenced from: /Users/username/Library/Developer/Xcode/DerivedData/Sudoku-dhrdonaeqzsgcvewndimxbbsltnc/Build/Products/Debug/Sudoku.app/Contents/MacOS/Sudoku
  Expected in: /Users/username/Library/Developer/Xcode/DerivedData/Sudoku-dhrdonaeqzsgcvewndimxbbsltnc/Build/Products/Debug/Sudoku.app/Contents/MacOS/../Frameworks/libswift_stdlib_core.dylib
Run Code Online (Sandbox Code Playgroud)

只是因为你知道该项目仍在编译,并且在Xcode 6 beta 3中运行良好.

swift xcode6

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

"是"和isKindOfClass()之间有区别吗?

Swift提供is关键字(和as?)来检查对象是否可以成功向下转换:

if foo is MyClass {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

NSObjectProtocol也提供原始func isKindOfClass(aClass: AnyClass!) -> Bool:

if something.isKindOfClass(MyClass) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

对于符合的类NSObjectProtocol,这真的很不一样吗?

swift

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