小编Gle*_*enn的帖子

第一个元素标记空列表字符串.崩溃只发生在生产中

所以我一直把头发拉过这个神秘的问题(至少对我而言).它只发生在App Store上.我尽力检查我的BookingViewModel代码,我确信那里应该没有崩溃,所以我做了一些清理,然后上传了一个新版本到TestFlight,并再次发生崩溃.

这是Fabric's Crashlytics的崩溃日志的屏幕截图:

在此输入图像描述

和一段堆栈跟踪:

#0. Crashed: com.apple.main-thread
0  libswiftCore.dylib             0x103e70314 swift_unknownRelease + 24
1  libswiftCore.dylib             0x103e37b5c swift_arrayDestroy + 68
2  libswiftCore.dylib             0x103c308c0 (Missing)
3  libswiftCore.dylib             0x103e40f04 swift_unownedCheck + 88
4  appname                        0x102940848 BookingViewModelBookingViewModelBooking first-element-marker  empty-list String (BookingViewModel.swift:167)
Run Code Online (Sandbox Code Playgroud)

最后,来自我的代码BookingViewModel有崩溃日志中描述的第167行(我已经编辑了这个问题的代码,我删除了一些行,但是这个想法仍然存在,也是为了使代码简短):

init(_ booking: Booking, withCompleteInfoCompletion completeInfo: @escaping BookingViewModelCompleteInfoCompletion) {
        let createdDate = booking.createdAt ?? ""
        let username = booking.username ?? ""
        let firstName = booking.firstName ?? ""
        let lastName = booking.lastName ?? ""
        let age = …
Run Code Online (Sandbox Code Playgroud)

ios swift

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

ALAsset 和 PHAsset 有什么区别?

今天早上我一直很好奇PHAsset。我ALAsset上个月处理过。我从 Apple 网站下载了一个 iOS 项目,该项目ALAsset用于制作一个简单的类似 iOS 照片的应用程序,我对其进行了修改以添加更多功能,使其成为更像 iOS 照片的应用程序。然后我的老板处理了我的项目并告诉整个办公室我应该接受培训,他必须重新编写整个项目,因为我的代码大部分已经过时(可能是因为使用ALAsset?)。我的老板在 iOS 方面非常出色,我看到了他的代码,他正在使用PHAsset.

那么ALAsset和之间有什么区别PHAsset?我还在 Apple/iOS 论坛中看到了一个PHAsset新的和ALAsset旧的主题。

另外,我想知道两者之间哪个更好,在将元数据写入图像时,这两者中哪一个更容易使用。

我是 iOS 新手(2 个月),我可以看到,PHAsset并且ALAsset都来自NSObject.

https://developer.apple.com/library/prerelease/ios/documentation/Photos/Reference/PHAsset_Class/index.html

https://developer.apple.com/library/prerelease/ios/documentation/AssetsLibrary/Reference/ALAsset_Class/index.html

ios alasset phasset

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

PolyLines未在谷歌地图中显示

我想在谷歌地图上显示目的地和来源之间的路径.我是谷歌方向api的坐标之间的路线,我得到回应并设置在谷歌地图,但没有在地图上显示.我的代码是

func getPolylineRoute(from source: CLLocationCoordinate2D, to destination: CLLocationCoordinate2D){

    let config = URLSessionConfiguration.default
    let session = URLSession(configuration: config)

    let url = URL(string: "https://maps.googleapis.com/maps/api/directions/json?origin=\(source.latitude),\(source.longitude)&destination=\(destination.latitude),\(destination.longitude)&sensor=true&mode=driving&key=AIzaSyAyU5txJ86b25-_l0DW-IldSKGGYqQJn3M")!

    let task = session.dataTask(with: url, completionHandler: {
        (data, response, error) in

        DispatchQueue.main.async {

            if error != nil {
                print(error!.localizedDescription)
                AppManager.dissmissHud()
            }
            else {
                do {
                    if let json : [String:Any] = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any]{

                        guard let routes = json["routes"] as? NSArray else {
                            DispatchQueue.main.async {
                                AppManager.dissmissHud()
                            }
                            return
                        }

                        if (routes.count > 0) …
Run Code Online (Sandbox Code Playgroud)

google-maps-api-3 google-maps-markers ios google-polyline swift

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

如何为某个 pod 指定特定的源?

虽然我相信这是无害的,但警告让我很恼火。所以我将一个非常特定版本的TwilioChatClientTwilioClient一起使用。这两个特定版本是 Twilio 在其示例项目中使用的版本。

无论如何,安装/更新 pod 时的警告:

[!] 发现多个规范TwilioChatClient (1.0.9): - /Users/XXX/.cocoapods/repos/master/Specs/7/d/e/TwilioChatClient/1.0.9/TwilioChatClient.podspec.json - /Users/XXX/.cocoapods/repos /twilio/TwilioChatClient/1.0.9/TwilioChatClient.podspec

[!] 发现多个规范TwilioChatClient (1.0.8): - /Users/XXX/.cocoapods/repos/master/Specs/7/d/e/TwilioChatClient/1.0.8/TwilioChatClient.podspec.json - /Users/XXX/.cocoapods/repos /twilio/TwilioChatClient/1.0.8/TwilioChatClient.podspec

[!] 发现多个规范TwilioChatClient (1.0.7): - /Users/XXX/.cocoapods/repos/master/Specs/7/d/e/TwilioChatClient/1.0.7/TwilioChatClient.podspec.json - /Users/XXX/.cocoapods/repos /twilio/TwilioChatClient/1.0.7/TwilioChatClient.podspec

[!] 发现多个规格 TwilioChatClient (1.0.6): - /Users/XXX/.cocoapods/repos/master/Specs/7/d/e/TwilioChatClient/1.0.6/TwilioChatClient.podspec.json - /Users/XXX/.cocoapods/repos /twilio/TwilioChatClient/1.0.6/TwilioChatClient.podspec

[!] 发现多个规范TwilioChatClient (1.0.5): - /Users/XXX/.cocoapods/repos/master/Specs/7/d/e/TwilioChatClient/1.0.5/TwilioChatClient.podspec.json - /Users/XXX/.cocoapods/repos /twilio/TwilioChatClient/1.0.5/TwilioChatClient.podspec

[!] 发现多个规范TwilioChatClient (1.0.4): - /Users/XXX/.cocoapods/repos/master/Specs/7/d/e/TwilioChatClient/1.0.4/TwilioChatClient.podspec.json - /Users/XXX/.cocoapods/repos /twilio/TwilioChatClient/1.0.4/TwilioChatClient.podspec

我的播客文件:

project 'Proj/Proj.xcodeproj'

source 'https://github.com/CocoaPods/Specs'
source 'https://github.com/twilio/cocoapod-specs'

platform :ios, '10.0' …
Run Code Online (Sandbox Code Playgroud)

twilio ios cocoapods

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

通过Braintree PayPal付款始终无法通过iOS

我已经在Braintree iOS的GITHub上打开了一张与此有关的票。只是希望能快速获得帮助。问题来了:

如标题所示,我的付款(在iOS中)总是失败。显然,我同事的作品(Android)中的付款成功了。

我从这里彻底遵循了示例代码和准则:https : //developers.braintreepayments.com/guides/paypal/client-side/ios/v4

在iOS中,经过所有过程(从服务器的客户端令牌-> BT SDK-> PayPal浏览器->应用程序->将随机数发送到我们的服务器),我从服务器得到的错误始终是:

不支持PayPal待付款。

我的后端人员也不知道背后的原因,他只显示了此日志并给了我:

{
   "errors": {},
   "params": {
       "transaction": {
           "type": "sale",
           "amount": "1",
           "merchantAccountId": "USD",
           "paymentMethodNonce": "80823f63-5ea9-0b8b-67da-0710bd7d9ff1",
           "orderId": "333",
           "descriptor": {
               "name": "company name*myurl.com"
           },
           "options": {
               "submitForSettlement": "true",
               "paypal": {
                   "customField": "custom",
                   "description": "description"
               }
           }
       }
   },
   "message": "Unknown or expired payment_method_nonce.",
   "creditCardVerification": null,
   "transaction": null,
   "subscription": null,
   "merchantAccount": null,
   "verification": null
}
Run Code Online (Sandbox Code Playgroud)

这是我设置SDK的工作:

private func processPayPalClientToken(_ clientToken: String) {
        SVProgressHUD.show(withStatus: "Please wait...") …
Run Code Online (Sandbox Code Playgroud)

paypal braintree ios swift

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

UITextView的RxSwift事件

当我UITextFieldDelegate通过RxSwift 实现时,我这样做:

self.textField_AddressType.rx.controlEvent(.editingDidBegin).subscribe { _ in
    // Code here...
}.disposed(by: self.disposeBag)
Run Code Online (Sandbox Code Playgroud)

但是当我申请时UITextView,

self.textView.rx.controlEvent(.editingDidBegin).subscribe { _ in
   // Code here...
}.disposed(by: self.disposeBag)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

'UITextView'不是'UIControl'的子类型

我找不到关于这个问题的任何内容,还有另一种方法可以UITextViewDelegate在RxSwift中实现吗?

ios swift rx-swift

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

如何在 RxSwift 中实现 shouldChangeText

有没有办法以shouldChangeTextIn UITextViewRxSwift 的方式实现的委托方法?我的目标是限制用户的文本输入。我只有这个:

    self.textView.rx.text
        .orEmpty
        .scan("") { (previous, new) -> String in
            return new.count > 254 ? previous : new
        }
        .bind(to: self.viewModel.notes)
        .disposed(by: self.disposeBag)
Run Code Online (Sandbox Code Playgroud)

这是用于数据的,但我不知道如何防止在 254 计数后进一步输入。

我也找到了,RxTextViewDelegateProxy但我不太确定如何使用它。

let rxTVDelegateProxy = RxTextViewDelegateProxy(textView: self.textView)
Run Code Online (Sandbox Code Playgroud)

ios swift rx-swift

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

如何在Swift中从hashValue实现hash(into :)?

我对如何处理编译器不使用hashValue而不是实施的弃用警告一无所知hash(into:)

“ Hashable.hashValue”已作为协议要求弃用;通过实现'hash(into :)'来使类型'MenuItem'与'Hashable'一致

Swift的回答:'Hashable.hashValue'已被弃用为协议要求;有这个例子:

func hash(into hasher: inout Hasher) {
    switch self {
    case .mention: hasher.combine(-1)
    case .hashtag: hasher.combine(-2)
    case .url: hasher.combine(-3)
    case .custom(let regex): hasher.combine(regex) // assuming regex is a string, that already conforms to hashable
    }
}
Run Code Online (Sandbox Code Playgroud)

而且我有这个结构,可以自定义PagingItem羊皮纸(https://github.com/rechsteiner/Parchment)。

import Foundation

/// The PagingItem for Menus.
struct MenuItem: PagingItem, Hashable, Comparable {
    let index: Int
    let title: String
    let menus: Menus

    var hashValue: Int {
        return index.hashValue …
Run Code Online (Sandbox Code Playgroud)

hashable swift

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

邮递员身体原始要求Swift Alamofire

我正在尝试重新创建这个Postman设置,以便在Alamofire上发布.这是我第一次看到一个需要参数和带有Raw Json的主体的API.

我已经完成了收集和格式化我的数据(在Json中使用SwiftyJSON或Dictionary [String : Any]/ Parameters)来满足上述要求.

在此输入图像描述

虽然我确实看到了类似的问题:邮递员要求Alamofire请求,但它没有有效的答案.假设我对从各种API发布/获取/ etc数据非常有经验,但我只是不知道如何传递原始数据,就像上面的照片一样.请在代码中查看我的评论.

这是我正在为此请求执行的功能:

/** Apply to job with Shift.
 *  This service function creates a json data for applying.
 */

func someFuncService(_ job: Job, daySchedules: [(Int, String, Schedule)], withBlock completion: @escaping JobServiceCommonCallBack) {
    AuthService.someFunc { (currentCustomer, accessToken) in
        guard let lalala = currentCustomer?.id,
            let accessT = accessToken else {
                completion(LalaErrors.currentCustomerError)
                return
        }

        guard let jobId = job.id else {
            completion(LalaErrors.modelError)
            return
        }


        let coreService = LalaCoreService()

        let applicantEndpoint = …
Run Code Online (Sandbox Code Playgroud)

ios swift alamofire

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

Sequelize 模型关联不会创建新列

为什么在我的某些模型中,sequelize WON\xe2\x80\x99T 为foreignkey创建一个新列?但它确实为其他模型创建了???它\xe2\x80\x99s令人沮丧和奇怪。例如,在此 User 模型中,sequelize won\xe2\x80\x99t create role_id

\n\n
\'use strict\';\nmodule.exports = (sequelize, DataTypes) => {\n  const User = sequelize.define(\'User\', {\n    id: { type: DataTypes.BIGINT, allowNull: false, autoIncrement: true, unique: true, primaryKey: true },\n    first_name: DataTypes.STRING,\n    last_name: DataTypes.STRING\n  }, {});\n  User.associate = function(models) {\n    User.belongsTo(models.Role, { foreignKey: \'role_id\' });\n  };\n  return User;\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

这是一个类似的问题:Sequelize not 创建模型关联列但是!没有得到答复。

\n\n

我花了几个小时在这上面,我做了如下的事情:

\n\n
    \n
  1. 彻底阅读: https: //sequelize.org/master/manual/assocs.html
  2. \n
  3. 进行实验,例如创建一个名为 的新虚拟模型NewUser。有用!但同样没有User名字。
  4. \n
  5. 发布在 Sequelize 的 …

javascript node.js sequelize.js

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