小编lag*_*oon的帖子

使用Swift触摸任何地方关闭iOS键盘

我一直在寻找这个,但我似乎无法找到它.我知道如何解雇键盘,Objective-C但我不知道如何使用Swift?有人知道吗?

uikeyboard ios swift

376
推荐指数
22
解决办法
33万
查看次数

为什么我的Swift循环失败并显示错误"无法在结束<start时形成范围"?

我有一个for循环,它检查一个数字是否是一个数字的因子,然后检查该因子是否为素数,然后将它添加到数组.根据原始号码,我会收到错误消息

致命错误:无法使用end <start形成范围

这几乎每次都会发生,但对于某些数字,它可以正常工作.我发现使用它的唯一数字是9,15和25.

这是代码:

let num = 16 // or any Int
var primes = [Int]()

for i in 2...(num/2) {

    if ((num % i) == 0) {
        var isPrimeFactor = true

        for l in 2...i-1 {
            if ((i%l) == 0) {
                isPrimeFactor = false;
            }//end if
        }//end for

        if (isPrimeFactor == true) {
            primes.append(i)
        }//end if

    }//end if

}//end for
Run Code Online (Sandbox Code Playgroud)

for-loop runtime-error factors swift

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

在Swift中的视图控制器之间传递数据

我正在尝试将应用程序从Objective-C转换为Swift,但我找不到如何使用Swift在视图之间传递数据.我的Objective-C代码是

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
AnsViewController *ansViewController;
ansViewController = [storyBoard instantiateViewControllerWithIdentifier:@"ansView"];
ansViewController.num = theNum;
[self presentViewController:ansViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

它正在做的是它基本上取变量theNum,并将其传递给另一个视图控制器上的变量num.我知道这可能是一个简单的问题,但我对Swift非常困惑,所以如果有人能解释他们如何将其改为Swift,我将不胜感激!

谢谢

ios uistoryboard uistoryboardsegue swift

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

无法在Swift 3中创建范围

我试图在Swift 3中创建一个我在Swift 2中已有的范围,但它一直给我这个错误: String may not be indexed with 'Int', it has variable size elements

这是我的代码:

let range = expireRange!.startIndex.advancedBy(n: 7) ..< expireRange!.startIndex.advancedBy(n: 16)
Run Code Online (Sandbox Code Playgroud)

expiredRange是一个 Range<Index>?

在Swift 2中,我有:

let range = expireRange!.startIndex.advancedBy(7)...expireRange!.startIndex.advancedBy(16)
Run Code Online (Sandbox Code Playgroud)

swift swift3 ios10 xcode8

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

MPNowPlayingInfoCenter停止更新进度条

我正在制作一个有音乐播放器的应用程序.我有一段时间没有参与其中,但是我最后一次工作时它nowPlayingInfo 正在工作.现在,当我将其更新为Swift 3时,除进度条外,一切正常.

我在这里看到了几个类似的问题,谈到了竞争条件,它被某些东西所覆盖,但我似乎无法弄清楚是什么.我正在使用AVQueuePlayerif如果有帮助.

跳过和上一个按钮工作,专辑封面,标题和艺术家完美更新,但经过的时间只是没有更新.当我调试时,MPNowPlayingInfoPropertyElapsedPlaybackTimefrom MPNowPlayingInfoCenter.default().nowPlayingInfo显示正确的数字,但控制中心的实际屏幕不是.通常,进度停留在0:01并且不会移动.但是,如果我在我的应用程序中寻求使用滑块并返回控制中心,它会显示我寻找的时间但仍然保持不变.

这是我的setNowPlaying代码:

func setNowPlaying(_ dura: Float, timePlayed: Float) {
    let s = songs[playbackInstance.currentSongIndex]
    let albumArt = MPMediaItemArtwork.init(boundsSize: CGSize(width: 480, height: 360), requestHandler: { (size) -> UIImage in
        return self.songImageView.image ?? #imageLiteral(resourceName: "WhiteMusic")
    })
    let songInfo: [String: Any]? = [
        MPMediaItemPropertyTitle: s.name,
        MPMediaItemPropertyArtist: s.artist,
        MPMediaItemPropertyArtwork: albumArt,
        MPMediaItemPropertyPlaybackDuration: dura,
        MPNowPlayingInfoPropertyElapsedPlaybackTime: CMTimeGetSeconds(player.currentTime())
    ]

    MPNowPlayingInfoCenter.default().nowPlayingInfo = songInfo
}
Run Code Online (Sandbox Code Playgroud)

我曾经设置过传递给方法MPNowPlayingInfoPropertyElapsedPlaybackTime的timePlayed变量,但由于它不起作用我player.currentTime()按照其他问题的建议尝试,这可能是比我正在使用的更好的衡量标准.

以下是寻求帮助的代码:

@IBAction func sliderChanged(_ sender: UISlider) …
Run Code Online (Sandbox Code Playgroud)

avqueueplayer mpnowplayinginfocenter swift swift3

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

在Swift中为控制器属性赋值

我试图在Swift中的视图之间传递一个int变量,但我不知道如何访问其他View控制器的属性.

在目标CI中会做这样的事情

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
AnsViewController *ansViewController = [storyBoard instantiateViewControllerWithIdentifier:@"ansView"];
ansViewController.num = theNum;
[self presentViewController:ansViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

在另一个viewcontroller.h文件中,我会写这个来声明属性来获取数据

@property (nonatomic) int num;
Run Code Online (Sandbox Code Playgroud)

现在对于斯威夫特我有这个

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let ansViewController : UIViewController = storyBoard.instantiateViewControllerWithIdentifier("ansView") as UIViewController
ansViewController.num = theNum;
self.presentViewController(ansViewController, animated:true, completion:nil)
Run Code Online (Sandbox Code Playgroud)

在另一个视图控制器的.swift文件中我通过执行来声明num

let num: int
Run Code Online (Sandbox Code Playgroud)

我很确定这不是正确的方法,因为我在这一行上收到错误

ansViewController.num = theNum;
Run Code Online (Sandbox Code Playgroud)

它说,"UIViewController没有名为num的成员"我如何解决这个错误,我做错了什么?

谢谢

objective-c uiviewcontroller ios swift ios8

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

Objective-C无法将NSNumber转换为int

我有一个简单的代码,它将遍历一个整数数组但是当我尝试使用"for in"循环时,它说我需要一个对象,所以我使用了一个NSNumber,但为了让我的代码工作,它必须是一个int所以在循环之后,我让它将NSNumber转换为int.它给了我另一个错误,说我需要声明变量_ strong以使它工作所以我这样做但现在它给了我这些错误:"不兼容的指向整数转换的指针'NSNumber* _strong' 发送到'int'类型的参数"并且"ARC不允许将'int'隐式转换为'NSNumber*'"以下是给出错误的代码:

for(__strong NSNumber *i in factors) {

        i = [i intValue];
Run Code Online (Sandbox Code Playgroud)

arrays int integer objective-c automatic-ref-counting

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