小编Dav*_*eek的帖子

Swift /如何使用dispatch_group和多个被调用的Web服务?

dispatch_group用来调用Firebase请求函数,并在请求完成后得到通知,以便能够处理结果.在这种情况下,我刚刚发布了一个print语句.

func loadStuff() {
    dispatch_group_enter(group)
        myFirebaseFunction() {
             dispatch_group_leave(group)
        }

    dispatch_group_notify(group, dispatch_get_main_queue()) {
        print("done")
    }
}

func myFirebaseFunction(completionHandler: () -> ()) {

    let usersRef = firebase.child("likes")
    usersRef.observeEventType(.Value, withBlock: { snapshot in

             if snapshot.exists() {
                   let sorted = (snapshot.value!.allValues as NSArray).sortedArrayUsingDescriptors([NSSortDescriptor(key: "date",ascending: false)])

                   for item in sorted {

                       dict.append(item as! NSDictionary)
                   }
            }
            completionHandler()
   })   
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常.问题是,在运行时,数据将添加到Firebase数据库中.这就是为什么我必须使用observeEventType而不是observeSingleEventOfType.

这意味着在运行时期间有一个观察者,如果数据已添加到数据库中,myFirebaseFunction则将再次调用其中的块.

一旦发生这种情况,应用程序崩溃,因为dispatch_group_leave(group)没有调用dispatch_group_enter(group).只要我做对了.

dispatch_group_enter(group)
    myFirebaseFunction() {
         dispatch_group_leave(group)      // crash here
    }
Run Code Online (Sandbox Code Playgroud)

如果我将其更改为 …

ios firebase swift firebase-realtime-database

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

Swift /如何使用动态高度的UITextView INSIDE UITableViewCell具有动态高度

我正在使用以下代码使UITableViewCell具有动态高度:

tableView.estimatedRowHeight = 155
tableView.rowHeight = UITableViewAutomaticDimension
Run Code Online (Sandbox Code Playgroud)

这段代码让UITextView根据内容改变它的高度.

extension NewUserTweetTableVC: UITextViewDelegate {

    func textViewDidChange(textView: UITextView) {
        let fixedWidth = textView.frame.size.width
        textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
        let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
        var newFrame = textView.frame
        newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
        textView.frame = newFrame    
    }
}
Run Code Online (Sandbox Code Playgroud)

一旦我在运行时更改了UITextView的文本,UITextView的高度就会改变,但UITableViewCell的高度却没有.我怎么能改变呢?非常感谢帮助.

在此输入图像描述 在此输入图像描述

uitableview ios swift

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

Swift/Instagram API - 如何使用Instagram App进行身份验证

我需要AccessToken让用户在我的应用程序中授予访问自己的Instagram帐户的权限.我在Instagram开发中心注册了所有内容.

目前我正在使用SimpleAuth来接收AccessTokenInstagram.

到目前为止,一切都运作良好.我收到了令牌,我可以使用它.

但是当我第一次登录时,我注意到,我不知道我的密码是什么.我总是用Facebook登录或者已经登录.我不想让我的用户遇到同样的问题并让他们重置他们的Instagram密码......

我现在用Google搜索了一段时间,没有成功.有没有办法验证用户并使用Instagram应用程序接收AccessToken?

我已经加入Instagram的到LSApplicationQueriesSchemesinfo.plist和发送图像到Instagram的应用程序发布到他们那里工作.所以调用应用程序本身不是问题.

这是我当前在UIViewController中打开WebView的代码 - 但用户必须使用用户名和密码登录.

在此输入图像描述

更新代码: 如何使用Instagram进行身份验证

我的可能性是什么?非常感谢帮助.

ios instagram swift

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

如何限制Swift中String或属性String中的字符数

给定是一个带有x个字符的(html)字符串.String将被格式化为属性String.然后显示在UILabel.

UILabel具有的高度>= 25<= 50到行数限制为2.

由于String具有在格式化的属性String中不可见的字符,例如<b> / <i>,最好的方法是限制属性String的字符数.

UILabel财产.lineBreakMode = .byTruncatingTail导致词语被削减.

在此输入图像描述

我们的目标,如果字符数将超过在空间的限制UILabel,是词与词之间切断.渴望maxCharacterCount = 50.确定space之前的最后一个maxCharacterCount.剪切字符串并追加...为最后一个字符UILabel.

限制角色的最佳方法是什么?帮助非常感谢.

string swift

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

Swift/SKStoreProductViewController pushViewController导致(lldb)

要将用户推送到iTunes商店以获取所需的项目,我正在使用以下功能:

func openStoreProductWithiTunesItemIdentifier(identifier: String) {

    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier, SKStoreProductParameterAffiliateToken : ITUNES_AFFILIATE_ID]
    storeViewController.loadProductWithParameters(parameters) { [weak self] (loaded, error) -> Void in
        if loaded {

            self!.navigationController?.pushViewControllerWithHandler(storeViewController, animated: true) {

                LilithProgressHUD.hide() // custom progress hud
            }
        }
    }
}

extension UINavigationController {

    func pushViewControllerWithHandler(viewController: UIViewController, animated: Bool, completion: Void -> Void) {

        CATransaction.begin()
        CATransaction.setCompletionBlock(completion)
        pushViewController(viewController, animated: animated)
        CATransaction.commit()
    }
}
Run Code Online (Sandbox Code Playgroud)

叫做

let trackID = "thisIsMyTrackID"
openStoreProductWithiTunesItemIdentifier(trackID)
Run Code Online (Sandbox Code Playgroud)

这导致了

在此输入图像描述 在此输入图像描述 在此输入图像描述

如果我不是:

self!.navigationController?.pushViewControllerWithHandler(storeViewController, animated: true) { …
Run Code Online (Sandbox Code Playgroud)

ios swift

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

如何使用Spotify SDK和Swift 3正确处理令牌刷新.错误代码= 3840

文艺青年最爱的 我收到:JSON text did not start with array or object and option to allow fragments not set.如果我想获得一个令牌和No refresh token available in the session!如果我尝试续订的令牌.

我正在尝试为Swift 3中的Objective-C Spotify iOS SDK beta-25设置令牌刷新.我正在使用Heroku服务器和Spotify提供的Ruby脚本,更改为我的凭据.

require 'sinatra'
require 'net/http'
require 'net/https'
require 'base64'
require 'encrypted_strings'
require 'json'

CLIENT_ID = ENV['xxx']
CLIENT_SECRET = ENV['xxx']
ENCRYPTION_SECRET = ENV['xxx']
CLIENT_CALLBACK_URL = ENV['xxx://returnafterlogin']
AUTH_HEADER = "Basic " + Base64.strict_encode64(CLIENT_ID + ":" + CLIENT_SECRET)
SPOTIFY_ACCOUNTS_ENDPOINT = URI.parse("https://accounts.spotify.com")

get '/' do
"Working"    
end

post '/swap' do

    # This …
Run Code Online (Sandbox Code Playgroud)

spotify ios swift

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

为什么字体是可选的?

我创建了一个结构,让我的字体可以全局预先缓存:

struct Fonts {
    static let avenirRegular = UIFont(name: "AvenirNextCondensed-Regular", size: 14.0)
}
Run Code Online (Sandbox Code Playgroud)

用法...:

xy.font = Fonts.avenirRegular
Run Code Online (Sandbox Code Playgroud)

它告诉我,我的常数是一个可选项.

可选类型'UIFont?'的值 没有打开; 你的意思是用'!' 要么 '?'?

为什么它是可选的?是否有可能AvenirNextCondensed-Regular在每个iOS设备上都没有?非常感谢帮助.

uifont ios swift

7
推荐指数
2
解决办法
574
查看次数

如何将Vapor 2 Swift 4项目推向Heroku

使用Xcode 9和Swift 4以及vapor heroku push/ vapor heroku init,我收到:

-----> Swift app detected
Cloning into 'swiftenv'...
Swift 3 Heroku Installer
  Version: 3.1.1
  Operating System: ubuntu1404
 Installing Swiftenv
Cloning into '/app/.swiftenv'...
 Installing Swift
Downloading https://swift.org/builds/swift-3.1.1-release/ubuntu1604/swift-3.1.1-RELEASE/swift-3.1.1-RELEASE-ubuntu16.04.tar.gz
/tmp/swiftenv-3.1.1- /tmp/build_d
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
/tmp/build_d
3.1.1 has been installed.
?  Done
-----> Installing clang-3.7.0
precompile
-----> Building Package ... this will take a while
swift-build: error: Package requires …
Run Code Online (Sandbox Code Playgroud)

heroku swift vapor xcode9

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

Swift 3 /为什么来自snapshotView的快照在iPhone 7 Plus Simulator中显示为空白?

我正在使用以下代码创建自定义菜单转换.我花了最后两个小时试图弄清楚为什么快照显示为空白(仅使用iPhone 7 Plus模拟器).但是当我想创建一个视频使其成为这个线程的gif时,它可以在我的iPhone 6S Plus上运行.

更新:适用于iPhone 6S模拟器.但仍然没有在7 Plus.

import UIKit

class PresentMenuAnimator : NSObject {
}

extension PresentMenuAnimator : UIViewControllerAnimatedTransitioning {
    func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
        return 0.6
    }

    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {

        let fromVC = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from)
        let toVC = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to)
        let containerView = transitionContext.containerView
        containerView.insertSubview((toVC?.view)!, belowSubview: (fromVC?.view)!)

        // replace main view with snapshot
        let snapshot = fromVC?.view.snapshotView(afterScreenUpdates: false)
        snapshot?.tag = MenuHelper.snapshotNumber
        snapshot?.isUserInteractionEnabled = false
        snapshot?.layer.shadowOpacity = 0.7
        containerView.insertSubview(snapshot!, aboveSubview: (toVC?.view)!)
        fromVC?.view.isHidden …
Run Code Online (Sandbox Code Playgroud)

ios swift

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

iOS11如何通过滚动同步大型导航栏崩溃

使用Swift 3和Xcode 9我正在使用大UINavigationBar视图:

if #available(iOS 11.0, *) {

    navigationBar?.prefersLargeTitles = true

    UINavigationBar.appearance().largeTitleTextAttributes = [
        NSForegroundColorAttributeName: Colors.black
    ]

}
Run Code Online (Sandbox Code Playgroud)

当我滚动a时UITableView,条形图会快速折叠,从而产生不需要的空间:

之前:

在此输入图像描述

后:

在此输入图像描述

我碰到UITableView酒吧的那一刻就崩溃了.

tableView具有以下属性:

let rect = CGRect(

    x: 0,
    y: UIApplication.shared.statusBarView?.frame.height ?? 20,
    width: UIScreen.main.bounds.width,
    height: UIScreen.main.bounds.height

)

let tableView = UITableView(frame: rect)
Run Code Online (Sandbox Code Playgroud)

最顶层的tableViewself.navigationController?.navigationBar.frame.height ?? 44

另外,tableView设置为:

if #available(iOS 11.0, *) {
    self.contentInsetAdjustmentBehavior = .never
} 
Run Code Online (Sandbox Code Playgroud)

酒吧是半透明的,我希望保持这一点.我错过了什么?非常感谢帮助.

swift ios11

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