我有一个应用程序,我用它AVAudioEngine来使用AVAudioPlayerNodes和从本地文件系统播放文件AVAudioFiles.这完全没问题.
现在我想让我的设置也支持从互联网上的服务器流式传输MP3文件.
到目前为止我尝试过的
我希望我可以从NSURL指向网络地址的对象创建某种缓冲区,然后我可以使用它AVAudioPlayerNode.
我一直在搜索Stack Overflow和互联网,但没有找到任何有关如何实现这一目标的好建议.
我知道这个AVAudioEngine阵容包括:
AVAudioFile或的音频AVAudioBuffer.我AVAudioFile今天已经用于我的"本地文件设置"了.AVAudioFile,用于本地文件.'AVAudioFile'是使用'NSURL'创建的,所以我尝试使用指向服务器上的MP3文件的URL,就像在Playground中一样:
var fileError: NSError? = nil
let file = AVAudioFile(forReading: someURL, error: &fileError)
if fileError != nil {
fileError
}
Run Code Online (Sandbox Code Playgroud)这会给我带来这个错误的回报:
Error Domain=com.apple.coreaudio.avfaudio Code=2003334207 "The operation couldn’t be completed. (com.apple.coreaudio.avfaudio error 2003334207.)" UserInfo=0x7fbfab424480 {failed call=ExtAudioFileOpenURL((CFURLRef)fileURL, &_extAudioFile)}
Run Code Online (Sandbox Code Playgroud)
我的问题(只是为了说清楚:-))
那些有光明的人知道如何使用AVAudioEngine从互联网上的服务器流式传输MP3文件吗?
或者我应该放弃并使用AVPlayer它?
期待您的回音.
我想在扩展中添加闭包属性,UITextView所以我使用typealias定义一个闭包:
typealias TextViewHeightDidChangedClosure = (_ currentTextViewHeight:CGFloat)->Void
extension UITextView{
func setTextViewHeightDidChanged(textViewHeightDidChanged:TextViewHeightDidChangedBlock){
objc_setAssociatedObject(self, &TextViewHeightDidChangedBlockKey, textViewHeightDidChanged, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY_NONATOMIC)
}
func textViewHeightDidChanged()->TextViewHeightDidChangedBlock?{
let textChanged : ((CGFloat)->Void) = objc_getAssociatedObject(self, &TextViewHeightDidChangedBlockKey) as! TextViewHeightDidChangedBlock
return textChanged
}
}
Run Code Online (Sandbox Code Playgroud)
但它告诉我一个错误说:
由于信号命令失败:分段错误:11.
这是错误的图像
谁能告诉我为什么,给我一个深刻有意义的解释,非常感谢你!
我正在更新我的本地通知以使用iOS 10,我遇到了一个问题,我认为nextTrigger函数返回NOT"触发条件将满足的下一个日期."而是返回当前日期时间的任何内容.加上您最初设置UNTimeInvervalNotificationTrigger的内容.
因此,如果您将触发器设置为在60秒内关闭,那么从文档中我期望当我调用nextTriggerDate()时,我会让它返回设置触发器的日期时间+ 60秒.因此,如果我将其设置为12:00:00,我希望nextTriggerDate()将是12:01:00.然而,我所经历的是,无论当前日期是+ 60秒,它都会返回.
我编写了一个调度UNTimeIntervalNotificationTrigger的示例,然后每秒打印出nextTriggerDate().当我运行它时,我每秒都会获得一个新的nextTriggerDate.像这样:
//Optional(2016-11-03 21:26:31 +0000)
//Optional(2016-11-03 21:26:32 +0000)
//Optional(2016-11-03 21:26:33 +0000)
//Optional(2016-11-03 21:26:34 +0000)
//Optional(2016-11-03 21:26:35 +0000)
//Optional(2016-11-03 21:26:36 +0000)
Run Code Online (Sandbox Code Playgroud)
我用苹果打开了TSI,但是......你知道......这需要一段时间.所以我想我会看到这里是否有人有任何见解.我怀疑这是一个错误,如果我得到更多信息,我会更新这个.
这是我用来说明问题的代码:
import UIKit
import UserNotifications
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var setButton: UIButton!
@IBOutlet weak var timePicker: UIPickerView!
weak var timer: Timer?
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func setButtonAction(_ sender: UIButton) {
var mySecond = pickerSelection
// build notification
let content …Run Code Online (Sandbox Code Playgroud) 嗨,我遇到FBLogin的问题,Swift
它始终显示
"用户取消了登录."
在iOS8.2
和
"
NSUserDefaults由于模拟器错误而退回存储访问令牌"
我用的时候 iOS10.1
你对这个问题有什么建议吗?

我在 Applestore 发布了我的应用程序以供审核,但遭到拒绝,上面写着:
" 在启动和内容下载时,您的应用程序会在用户的 iCloud 上存储 1.4 GB,这不符合 iOS 数据存储指南。"
我在问题的末尾粘贴了完整的拒绝文本。
我不知道将数据存储到 ICLoud,我不确定他们如何测试我的应用程序。他们建议查看 iCloud 存储的设置,我做了什么,但是在安装时我看不到我的应用程序使用的任何 iCloud 存储:
经过一段时间或设置后,是否有任何自动过程将数据从文档文件夹存储到云端?
通常我的应用程序是 - 从我的服务器下载一个 zipfile 以存储在我的应用程序的 Document 文件夹中。- 然后应用程序也在文档文件夹中解压缩 zipfile。
使用 IOS-Simulator 进行测试时,我可以使用外壳检查文档文件夹的内容,内容就在那里。(而不是在 iCloud 上)
有人可以帮助我,在这种情况下开发人员必须做什么。
我在这里粘贴了相关代码,它显示了我如何下载内容以及如何解压缩内容。
class ViewController: UIViewController, NSURLSessionDelegate {
let sDataPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString as String; ///var/mobile/Containers/Data/Application/8897ED62-5BAE-4255-8459-F0F8381C171F/Documents/
download_file(sfrom,sToLocation: sDataPath);
func download_file(sURL: String, sToLocation: String) {
print("start downloading ...");
print("sURL : " + sURL + " sToLocation : " + sToLocation);
bytesDownloaded=0;
let downloadsessiondelegate = self;
downloadsessiondelegate.storePath=sToLocation; …Run Code Online (Sandbox Code Playgroud)