小编Ram*_*sad的帖子

AVURLAsset将持续时间返回为0

我试图获取音频文件的持续时间来修剪它们,我使用下面的代码,

audioAsset = [AVURLAsset assetWithURL:itemURL];

CMTime assetTime = [audioAsset duration];
Float64 duration = CMTimeGetSeconds(assetTime);
Run Code Online (Sandbox Code Playgroud)

当我提供媒体库的任何音频文件的itemURL时,我得到适当的持续时间,然后我能够修剪音频文件.然后我将修剪过的音频文件保存在文档目录中.但是当我尝试修剪已经修剪过的文件时,相同的代码会将0作为持续时间返回0.但是我可以播放修剪过的文件并使用AVAudioPlayer获取持续时间,但AVURLAsset的问题是什么我无法弄清楚.

有人可以帮忙吗?我已经在stackoverflow中尝试了几乎所有这些问题的答案.

audio duration ios avurlasset

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

如何在Swift中使用位操作?

我需要形成一个20字节的数据包,并通过蓝牙将有效载荷发送到硬件外设.

这个20字节的数据包在内部分为14个数据集,每个11位,最后6位应为空字符.

因此,总计: 160位(20字节)= 14(集)*11(位)+6(空字符)

11位再次分为3组,每组2位,3位和6位.然而,对于主要问题并不重要,我目前能够通过采用'Int16'来形成11位.我知道,我将进行移位操作以过滤11位.

如果我只有一个数据集,那么我应该填充除了带有空字符的前11位之外的所有20个字节,如果两个数据集除了22位之外的所有数据都应该分别为空字符.

我面临的问题是形成这个顺序的160位,因为奇数位是11.我想采取'Int'并执行shift(<<)操作然后按位OR(|)但是Int是64位.

目前我认为采用20的固定大小的字符数组将适合这种情况.虽然从概念上来说我认为这是最好的方式,但从程序上来说,我无法形成具有实现这一目标的所有条件的逻辑.我想我需要将所有逻辑放在一个循环中.

任何人都可以告诉它是实现这一目标的正确方法,并指导我解决它,如果这是最好的方法.或者指出任何其他方式(如果可用).

bit-manipulation swift

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

UISearchController需要额外的点击才能成为第一响应者

我将应用程序从一个屏幕切换UISearchBarUISearchController.这是一个tableview控制器.根据设计,我不应该首先在UI上保留搜索栏,除非它被激活,(通常将搜索栏保持为'tableHeaderView'是一种常见的做法).问题是,我有一个搜索按钮,当点击'搜索栏'应该被激活并成为第一响应者.

点击取消按钮时,应从UI中删除它.然而,当我点击导航栏上的"搜索栏按钮"时,UISearchController会激活,提供暗淡的背景但键盘不会出现.我需要再次点击搜索栏以在UI上显示键盘.

这是我的搜索栏按钮动作:

@IBAction func onTapSearch(_ sender: AnyObject) {
    self.view.addSubview(searchController.searchBar)
    searchController.isActive = true
    searchController.becomeFirstResponder()
    isSearchActive = true
    self.navigationController?.setToolbarHidden(true, animated: false)
}
Run Code Online (Sandbox Code Playgroud)

UISearchController在我的viewDidLoad方法中配置.如果您想要查看该部分代码,请告诉我,但这是通常的代码.我确认我不会在resignFirstResponder()任何地方调用任何方法.

uisearchbar ios swift uisearchcontroller swift3

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

给定年份和月份,该月份如何检查特定日期

我想检查一个月内是否存在特定日期.但无法找到任何帮助.举个例子,我在Playground中尝试了下面的代码;

var components = DateComponents()
components.month = 2
components.year = 2016
components.day = 30
components.calendar = Calendar.current

components.date
Run Code Online (Sandbox Code Playgroud)

这给出了答案;

"Mar 1, 2016, 12:00 AM"
Run Code Online (Sandbox Code Playgroud)

所以它做的是它试图用TimeZones操纵并移动针.因此,我无法找到一种方法来检查特定日期和特定日期是否存在.任何人都可以指导.

calendar nsdate nsdatecomponents ios swift

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

将多个数组合并为一个,按顺序索引

我有多个数组(最多15个),每个最多可以有1800个对象.

我需要将它们组合成一个数组,这样我就可以应用一个分隔符(',')来生成一个csv文件.问题是当我将它们组合成一个单独的数组时,它必须按顺序组合,就像每个数组的第一个对象应该先插入,然后是第二个对象索引,然后是第三个,依此类推.

我可以通过使用for-in循环来实现我想要的结果.然而,这并不十分乐观.我觉得可以使用swift中提供的功能方法(使用map,reduce和filter函数)以更清晰的方式完成.

但是我无法将它们完美地结合起来.任何人都可以帮助我使用快速的功能方法来实现结果.

PS:如果您希望我发布for-in循环代码,请告诉我,但我认为这不是必需的.

arrays functional-programming swift

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