如何在Swift中使用AV Kit Player View Controller播放视频?
override func viewDidLoad() {
super.viewDidLoad()
let videoURLWithPath = "http://****/5.m3u8"
let videoURL = NSURL(string: videoURLWithPath)
playerViewController = AVPlayerViewController()
dispatch_async(dispatch_get_main_queue()) {
self.playerViewController?.player = AVPlayer.playerWithURL(videoURL) as AVPlayer
}
}
Run Code Online (Sandbox Code Playgroud) 在Objective C中,可以执行以下操作来检查字符串:
if ([myString isEqualToString:@""]) {
NSLog(@"myString IS empty!");
} else {
NSLog(@"myString IS NOT empty, it is: %@", myString);
}
Run Code Online (Sandbox Code Playgroud)
如何在Swift中检测空字符串?
与Objective-C不同,Swift没有预处理器,那么还有办法手动弃用类的成员吗?
我正在寻找类似的东西:
-(id)method __deprecated;
Run Code Online (Sandbox Code Playgroud) 问题:当我使用使用Range的Swift String时,NSAttributedString接受NSRange
let text = "Long paragraph saying something goes here!"
let textRange = text.startIndex..<text.endIndex
let attributedString = NSMutableAttributedString(string: text)
text.enumerateSubstringsInRange(textRange, options: NSStringEnumerationOptions.ByWords, { (substring, substringRange, enclosingRange, stop) -> () in
if (substring == "saying") {
attributedString.addAttribute(NSForegroundColorAttributeName, value: NSColor.redColor(), range: substringRange)
}
})
Run Code Online (Sandbox Code Playgroud)
产生以下错误:
错误:'Range'不能转换为'NSRange'aligolsString.addAttribute(NSForegroundColorAttributeName,value:NSColor.redColor(),range:substringRange)
在Swift中,是否有一种聪明的方法可以使用Array上的高阶方法返回5个第一个对象?这样做的obj-c方法是保存索引,并循环遍历数组递增索引,直到它为5并返回新数组.有没有办法做到这一点filter
,map
或reduce
?
在Objective-C中,可以description
向其类添加一个方法以帮助调试:
@implementation MyClass
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p, foo = %@>", [self class], foo _foo];
}
@end
Run Code Online (Sandbox Code Playgroud)
然后在调试器中,您可以执行以下操作:
po fooClass
<MyClass: 0x12938004, foo = "bar">
Run Code Online (Sandbox Code Playgroud)
Swift中的等价物是什么?Swift的REPL输出可能会有所帮助:
1> class MyClass { let foo = 42 }
2>
3> let x = MyClass()
x: MyClass = {
foo = 42
}
Run Code Online (Sandbox Code Playgroud)
但我想重写此行为以打印到控制台:
4> println("x = \(x)")
x = C11lldb_expr_07MyClass (has 1 child)
Run Code Online (Sandbox Code Playgroud)
有没有办法清理这个println
输出?我见过Printable
协议:
/// This protocol should be adopted by types that wish …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,需要检查作业的截止日期.我想知道截止日期是否在下周内,如果是,则执行操作.
我能找到的大部分文档都在Objective-C中,我无法弄清楚如何在Swift中完成它.谢谢您的帮助!!
可以使用扩展向现有Swift对象类型添加扩展,如语言规范中所述.
因此,可以创建扩展名,例如:
extension String {
var utf8data:NSData {
return self.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
}
}
Run Code Online (Sandbox Code Playgroud)
但是,包含此类扩展的Swift源文件的最佳命名做法是什么?
在过去,该公约是使用extendedtype+categoryname.m
如在讨论了目标C型Objective-C的导向.但是Swift示例没有类别名称,并且调用它String.swift
似乎不合适.
所以问题是:鉴于上面的String
扩展,swift源文件应该被调用什么?
在我安装Xcode 7 beta并将我的swift代码转换为Swift 2之后,我遇到了一些我无法弄清楚的代码问题.我知道Swift 2是新的,所以我搜索并弄清楚,因为没有任何关于它,我应该写一个问题.
这是错误:
调用可以抛出,但它没有标记为'try',并且没有处理错误
码:
func deleteAccountDetail(){
let entityDescription = NSEntityDescription.entityForName("AccountDetail", inManagedObjectContext: Context!)
let request = NSFetchRequest()
request.entity = entityDescription
//The Line Below is where i expect the error
let fetchedEntities = self.Context!.executeFetchRequest(request) as! [AccountDetail]
for entity in fetchedEntities {
self.Context!.deleteObject(entity)
}
do {
try self.Context!.save()
} catch _ {
}
}
Run Code Online (Sandbox Code Playgroud)
快照:
我试图找到一种方法在我的Swift代码中包含PI常量.我已经在另一个答案中找到了帮助import Darwin
,我知道这些答案可以让我访问C函数.
我还检查了Math
包裹,Darwin
并发现了以下声明:
var M_PI: Double { get } /* pi */
所以,我假设有一种方法在代码中使用PI,我只是不知道如何 ...
swift ×10
ios ×5
objective-c ×2
xcode ×2
arrays ×1
avfoundation ×1
avkit ×1
darwin ×1
deprecated ×1
macos ×1
math ×1
nsdate ×1
nsrange ×1
xcode6 ×1