小编ccw*_*den的帖子

NSKeyedUnarchiver错误处理 - 防止Swift崩溃

由于Swift目前没有try-catch,我怎么能防止在这行代码中出现错误数据崩溃?

var myObject = NSKeyedUnarchiver.unarchiveObjectWithData(data) as MyClass
Run Code Online (Sandbox Code Playgroud)

UPDATE

我在操场上创建了一个非常简单的案例来进行演示.假设我们不知道是什么data,我如何在第二行捕获SIGABRT?是否无法检查以确保在调用之前可以取消归档NSData对象unarchiveObjectWithData

var data = "foo bar".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!
if let unarc = NSKeyedUnarchiver.unarchiveObjectWithData(data) { // Execution was interrupted: signal SIGABRT
}
Run Code Online (Sandbox Code Playgroud)

error-handling ios swift

15
推荐指数
1
解决办法
2027
查看次数

如何让 SwiftUI UIViewRepresentable 视图拥抱其内容?

我试图让 SwiftUI 识别 UIViewRepresentable 的内在大小,但它似乎把它当作框架设置为maxWidth: .infinity, maxHeight: .infinity. 我创建了一个人为的例子,这是我的代码:

struct Example: View {
    var body: some View {
        VStack {
            Text("Hello")
            TestView()
        }
        .background(Color.red)
    }
}

struct TestView: UIViewRepresentable {
    func makeUIView(context: UIViewRepresentableContext<TestView>) -> TestUIView {
        return TestUIView()
    }

    func updateUIView(_ uiView: TestUIView, context: UIViewRepresentableContext<TestView>) {
    }

    typealias UIViewType = TestUIView
}

class TestUIView: UIView {
    required init?(coder: NSCoder) { fatalError("-") }
    init() {
        super.init(frame: .zero)
        let label = UILabel()
        label.text = "Sed mattis urna a ipsum fermentum, …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

10
推荐指数
2
解决办法
4768
查看次数

Apple Pay支付"未完成付款" - 无法获得令牌

我正在使用PassKit实现Apple Pay,我正在以正确的方式显示对话框并处理委托方法,但每次我使用touch Id验证购买时它都显示"付款未完成"并且从未达到我的委托方法paymentAuthorizationViewController:didAuthorizePayment:completion:.我完全做了所有这些事情来设置苹果工资,但我似乎无法获得一个令牌发送到我的支付网关.

PKPaymentRequest *request = [[PKPaymentRequest alloc] init];
self.paymentRequest = request;
request.countryCode = @"US";
request.currencyCode = @"USD";
request.supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];
request.merchantCapabilities = PKMerchantCapabilityEMV;
request.merchantIdentifier = @"merchant.com.*******";
request.requiredShippingAddressFields = PKAddressFieldPostalAddress;
request.requiredBillingAddressFields = PKAddressFieldPostalAddress;

request.paymentSummaryItems = [self paymentSummaryItems];
self.paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
self.paymentPane.delegate = self;
if (self.paymentPane) {
    [self presentViewController:self.paymentPane animated:TRUE completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

这就是我所看到的,屏幕就在那里,一遍又一遍地说"再试一遍":

在此输入图像描述

objective-c ios applepay

8
推荐指数
1
解决办法
8068
查看次数

当我放弃对iOS 6的支持时会发生什么?

如果我发布对我的应用程序的更新,删除iOS 6支持并添加iOS 7兼容性,那么iOS 6上的用户会发生什么:

  1. 他们会在应用商店中看到更新吗?
  2. iOS 6上的新用户是否只需下载该应用的最新兼容版本?

app-store ios

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

swift - 使用literal创建空字符串:tuple dictionary

任何人都可以解释为什么第1行工作创建一个空的swift字典,但第2行不是当我尝试用int键和双值元组创建一个swift字典时....应该怎么做?

var testDic2 = [Int:Double]()

var testDic3 = [Int:(Double,Double)]()
Run Code Online (Sandbox Code Playgroud)

我在游乐场尝试了各种组合,唯一没有给我编译错误的版本如下

    var possibleTips = [Int(): (tipAmt:Double(), total:Double())]
Run Code Online (Sandbox Code Playgroud)

但我不确定这最后一种形式是否按照我的意愿声明字典(即按照上面的testDict3)

dictionary tuples literals swift

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