我只是想知道…
let movie = item as? Movie
Run Code Online (Sandbox Code Playgroud)
在这个例子中item是类型Movie或其他类型.如果后者movie将被赋予零值.因此movie将是类型Movie?.
现在看看下一个例子:
let movie: Movie?
movie = item as? Movie
Run Code Online (Sandbox Code Playgroud)
假设movie是一个类变量,我在其中一个类方法中赋予了一些值.
对我来说,感觉as? Movie有些多余,因为movie已经知道它是类型的Movie?.
Swift中是否有任何语法说:"将此对象向下转换为与我分配给它的对象相同的类型.如果这是一个可选类型并且向下转换失败,则分配nil."?
我希望有类似的东西:
movie = item as?
Run Code Online (Sandbox Code Playgroud)
要么
movie =? movie
Run Code Online (Sandbox Code Playgroud) 我有一个文本字段,其中包含UIInputView输入附件视图.
当我点击我的文本字段,键盘进入视图并且我可以看到附件视图的子视图,但它没有可见的背景.键盘动画完成后,UIInputView的背景将弹出视图.
在键盘动画仍在进行时,我该怎么做才能强制UIInputView的背景可见?
这是我的代码:
UIInputView *inputView = [[UIInputView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.bounds), 44.0f) inputViewStyle:UIInputViewStyleKeyboard];
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
button.frame = CGRectInset(inputView.bounds, 15.0f, 2.0f);
[button setTitle:@"Button" forState:UIControlStateNormal];
[inputView addSubview:button];
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.bounds), 44.0f)];
textField.inputAccessoryView = inputView;
[self addSubview:textField];
Run Code Online (Sandbox Code Playgroud) 我正在尝试单独测试我自己的一个类,它正在调用第三方类的方法:
FIRAuth.auth()?.signInAnonymously() { (user, error) in
//
}
Run Code Online (Sandbox Code Playgroud)
我正在使用基于协议的依赖注入来实现这一点:
protocol FIRAuthProtocol {
func signInAnonymously(completion: FIRAuthResultCallback?)
}
extension FIRAuth: FIRAuthProtocol {}
class MyClass {
private var firAuth: FIRAuthProtocol
init(firAuth: FIRAuthProtocol) {
self.firAuth = firAuth
}
func signIn() {
firAuth.signInAnonymously() { (user, error) in
//
}
}
}
class MockFIRAuth: FIRAuthProtocol {
var signInAnonymouslyCalled = false
func signInAnonymously(completion: FIRAuthResultCallback? = nil) {
signInAnonymouslyCalled = true
}
}
class MyClassSpec: QuickSpec {
override func spec() {
describe("MyClass") {
describe(".signIn()") {
it("should call signInAnonymously() …Run Code Online (Sandbox Code Playgroud) 这就是我要做的事情:
我现在有
我想要完成的是拥有一个在我的iPhone应用程序和WatchKit Extension之间共享的持久存储(Core Data).
所以这就是我到目前为止所做的
这是我的DataManager中的初始化程序的样子
public init() {
let sharedContainerURL: NSURL? = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.com.company.Project")
if let sharedContainerURL = sharedContainerURL {
let storeURL = sharedContainerURL.URLByAppendingPathComponent("Model.sqlite")
MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreAtURL(storeURL)
let station: Station? = Station.MR_createEntity()
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题
当我从iPhone应用程序的AppDelegate启动我的DataManager时,没有发生崩溃,但是station将是零.
当我用let stations: [Station]? = Station.MR_findAll() as? [Station]应用程序崩溃替换最后一行并显示以下错误:A fetch request must have an entity.
我在GitHub上搜索了所有SO和魔法记录问题,但找不到任何可以让我朝着正确方向前进的东西.非常感谢所有帮助.
我有一个 JSON,其 ID 在根级别:
{
"12345": {
"name": "Pim"
},
"54321": {
"name": "Dorien"
}
}
Run Code Online (Sandbox Code Playgroud)
我的目标是使用 Codable 创建一个同时具有 name 和 ID 属性的 User 对象数组。
struct User: Codable {
let id: String
let name: String
}
Run Code Online (Sandbox Code Playgroud)
我知道如何使用带有单个根级别密钥的Codable ,并且知道如何使用未知密钥。但我在这里尝试做的是两者的结合,我不知道下一步该做什么。
这是我到目前为止得到的:(您可以将其粘贴到 Playground 中)
import UIKit
var json = """
{
"12345": {
"name": "Pim"
},
"54321": {
"name": "Dorien"
}
}
"""
let data = Data(json.utf8)
struct User: Codable {
let name: String
}
let decoder = JSONDecoder() …Run Code Online (Sandbox Code Playgroud) swift ×4
cocoa-touch ×1
codable ×1
core-data ×1
decodable ×1
firebase ×1
ios7 ×1
jsondecoder ×1
mocking ×1
objective-c ×1
optional ×1
swift3 ×1
uitextfield ×1
unit-testing ×1
watchkit ×1