我目前正在尝试将自定义Swift类保存到NSUserDefaults.这是我的Playground的代码:
import Foundation
class Blog : NSObject, NSCoding {
var blogName: String?
override init() {}
required init(coder aDecoder: NSCoder) {
if let blogName = aDecoder.decodeObjectForKey("blogName") as? String {
self.blogName = blogName
}
}
func encodeWithCoder(aCoder: NSCoder) {
if let blogName = self.blogName {
aCoder.encodeObject(blogName, forKey: "blogName")
}
}
}
var blog = Blog()
blog.blogName = "My Blog"
let ud = NSUserDefaults.standardUserDefaults()
ud.setObject(blog, forKey: "blog")
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我收到以下错误
执行被中断,原因:信号SIGABRT.
在最后一行(ud.setObject...)
在带有消息的应用程序中,相同的代码也会崩溃
"属性列表格式无效:200(属性列表不能包含'CFType'类型的对象)"
有人可以帮忙吗?我在Maverick上使用Xcode 6.0.1.谢谢.
在这里,我有一种将视频层添加到我在IB中设置的UIView的方法:
-(void)loadPlayer{
self.asset = [AVAsset assetWithURL:url];
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:self.asset];
self.player = [AVPlayer playerWithPlayerItem:item];
self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
self.playerLayer.contentsGravity = AVLayerVideoGravityResizeAspect;
self.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
item.videoComposition = [AVVideoComposition videoCompositionWithPropertiesOfAsset:self.asset];
[self.player pause];
[self.player addObserver:self forKeyPath:@"status" options:0 context:nil];
dispatch_async(dispatch_get_main_queue(), ^{
[self.videoLayer.layer addSublayer:self.playerLayer];
});
}
Run Code Online (Sandbox Code Playgroud)
在View Controller的viewDidAppear中调用上述方法,因此,每次加载当前View Controller时,视频都应开始播放。
在这里,我检查玩家状态并准备好资产:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if (object == self.player && [keyPath isEqualToString:@"status"]) {
if (self.player.status == AVPlayerStatusReadyToPlay) {
[self.player play];
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题在于视图确实出现了,视频开始播放,但仅播放音频,而不播放视频。我得到的只是黑屏代替了视频。音频可以正常播放,但是由于未知原因,它似乎无法渲染视频帧。
这仅在iOS 10设备上发生,在iOS 9设备上运行时使用相同的代码,就像是超级按钮。该视频按预期显示。
就AVPlayer而言,iOS 10的AVFoundation框架是否有任何更改?还是我在这里缺少任何内容,因为iOS 9表现不错。 …
我已经研究了很多,但我在任何地方都能找到的唯一例子是为了定义 UIView 的边界,以便它们在对象的外部相互碰撞/反弹。
示例:一个球击中另一个球,然后它们相互弹开。
但是我想要做的是创建一个圆形视图来包含其他 UIViews,这样包含的边界是一个圆形,而不是默认的正方形。有没有办法实现这一目标?
如何在应用程序处于前台状态时接收推送通知时播放声音.
我的代码:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
if (application.applicationState == UIApplicationStateActive)
{
//create an audio player and play the sound
NSString *path = [[NSBundle mainBundle] pathForResource:@"whistle" ofType:@"caf"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: path];
AVAudioPlayer *theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:NULL];
theAudio.volume = 1.0;
[theAudio prepareToPlay];
[theAudio play];
}
NSLog(@"didReceiveRemoteNotification %@",userInfo);
}
Run Code Online (Sandbox Code Playgroud) 我有6个UITextfields,我想将它们全部放入一个字符串,这样我就可以得到输入到UItextField中的内容.
示例:在UItextfield1中,我输入数字"3",然后在UItextfield2中输入数字"5",依此类推.我想将它放入一个字符串,因此它显示为"35"....
以下是我的代码.任何帮助都会很棒!
class EnterUsersCode: UIViewController {
var textField1: UITextField! = {
let tf = UITextField()
tf.text = ""
return tf
}()
var textField2: UITextField! = {
let tf = UITextField()
tf.text = ""
return tf
}()
var textField3: UITextField! = {
let tf = UITextField()
tf.text = ""
return tf
}()
var textField4: UITextField! = {
let tf = UITextField()
tf.text = ""
return tf
}()
var textField5: UITextField! = {
let tf = UITextField()
tf.text = ""
return …Run Code Online (Sandbox Code Playgroud) ios ×4
swift ×3
animation ×1
avfoundation ×1
avplayeritem ×1
nscoding ×1
objective-c ×1
sigabrt ×1
swift4 ×1
uitextfield ×1
video ×1
xcode ×1
xcode9 ×1
xcode9-beta ×1