我正在阅读Michael Dippery @ 2015的书"Professional Swift".在第25页的书中,他写道:
"break和continue语句都会从最里面的循环中断开.但是,你可以标记循环,这样你就可以突破外循环了"
let data = [[3,9,44],[52,78,6],[22,91,35]]
let searchFor = 78
var foundVal = false
outer: for ints in data {
inner: for val in ints {
if val == searchFor {
foundVal = true
break outer
}
}
}
if foundVal {
print("Found \(searchFor) in \(data)")
} else {
print("Could not find \(searchFor) in \(data)")
}
Run Code Online (Sandbox Code Playgroud)
但是,当我改变时,在操场上:
break outer
Run Code Online (Sandbox Code Playgroud)
代码到
break inner
Run Code Online (Sandbox Code Playgroud)
出现相同的结果:
发现 78 in [[3, 9, 44], [52, 78, 6], [22, 91, 35]]
还有必要 …
我正在尝试关注最近使用a MPMediaPickerControllerDelegate
来呈现音乐选择列表的帖子.
该教程位于以下URL:
http://www.justindoan.com/tutorials/
我正在使用此代码:
import UIKit
import MediaPlayer
class ViewController: UIViewController, MPMediaPickerControllerDelegate {
var mediapicker1: MPMediaPickerController!
override func viewDidLoad() {
super.viewDidLoad()
let mediaPicker: MPMediaPickerController = MPMediaPickerController.self(mediaTypes:MPMediaType.music)
mediaPicker.allowsPickingMultipleItems = false
mediapicker1 = mediaPicker
mediaPicker.delegate = self
self.presentViewController(mediapicker1, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
但是我发现了:
self.presentViewController(mediapicker1, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
不起作用.不幸的是,Swift 3建议的自动解决方案也不起作用:
self.present(mediapicker1, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
此外,iOS 10 Beta发行说明,发现于:
https://www.scribd.com/doc/315770725/IOS-10-Beta-Release-Notes
在第10页,共18页,
MPMediaPickerController对象可能无法按预期显示.
我花了很多时间自己解决这个问题而没有成功.
有什么建议?
mpmediapickercontroller ios presentviewcontroller swift swift3
我使用 SwiftUI 创建了一个视频播放器,它使用 imagePickerController 加载视频,然后假设从设备检索到的视频播放。我发现检索视频后视频播放器没有刷新。我不确定如何提供刷新它所需的适当 @State|@Binding。
我学会了如何使用可用的在线资源编写视频播放器。我找到了一种从我的设备加载视频并将其加载到我的视频播放器的方法。但是,当我按下播放按钮时,加载视频后,只播放了声音。我试图让视频播放器 @State|@Binding 但找不到解决方案,因为它似乎不是直观地这样做。
谁能建议如何使用 SwiftUI 更新我的视频播放器代码?
PS 1) 您必须使用实际设备来加载视频;和 2) 滑块还没有工作。接下来我会继续努力。
披露:
我从在线资源中改编了这段代码。大部分工作的原始源代码可以在以下链接中找到:
https://www.raywenderlich.com/5135-how-to-play-record-and-merge-videos-in-ios-and-swift
https://medium.com/@chris.mash/avplayer-swiftui-part-2-player-controls-c28b721e7e27
import SwiftUI
import AVKit
import PhotosUI
import MobileCoreServices
struct ContentView: View {
@State var showImagePicker: Bool = false
@State var url: URL?
var body: some View {
ZStack {
VStack {
Button(action: {
withAnimation {
self.showImagePicker.toggle()
}
}) {
Text("Show image picker")
}
// The video player will needs to be a @State??? as it …
Run Code Online (Sandbox Code Playgroud) 我正在尝试.StartAnimating UIActivityIndicator当我旋转设备时,我试图使用覆盖函数:didRotateFromInterfaceOrientation; 但是,在旋转发生后调用此函数,我想在实际旋转期间进行动画处理.
我正在寻找一种在旋转时调用的方法.我查看了文献,并且发现了可能有用的折旧函数.
我现在可以使用任何方法吗?
我正在使用偏移量和手势修饰符在屏幕上移动一个圆圈。当我使用此代码时,一切都按预期工作:
import SwiftUI
struct MovingCircle: View {
@State private var dragged = CGSize.zero
var body: some View {
Circle()
.offset(x: self.dragged.width)
.frame(width: 20, height: 20)
.gesture(DragGesture()
.onChanged{ value in
self.dragged = value.translation
}
.onEnded{ value in
self.dragged = CGSize.zero
}
)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我不想将圆圈重置为 onEnded 的原始位置。我希望它保持原位,然后在拖动时再次移动。当我使用以下代码时,我无法在重新拖动时再次移动圆圈并且它保持原位:
import SwiftUI
struct MovingCircle: View {
@State private var dragged = CGSize.zero
var body: some View {
Circle()
.offset(x: self.dragged.width)
.frame(width: 20, height: 20)
.gesture(DragGesture()
.onChanged{ value in
self.dragged = value.translation
}
.onEnded{ value …
Run Code Online (Sandbox Code Playgroud) 我是Swift编程的初学者,他试图重新编写我在网上找到的来自Persistent ID的歌曲.原始代码可在以下网站找到:
我想在Swift 2中编写这段代码(我不会使用Objective-C),但我缺乏翻译它的知识和经验.
代码:
MPMediaItem *song;
MPMediaPropertyPredicate *predicate;
MPMediaQuery *songQuery;
predicate = [MPMediaPropertyPredicate predicateWithValue: MyPersistentIdString forProperty:MPMediaItemPropertyPersistentID];
songQuery = [[MPMediaQuery alloc] init];
[songQuery addFilterPredicate: predicate];
if (songQuery.items.count > 0)
{
//song exists
song = [songQuery.items objectAtIndex:0];
CellDetailLabel = [CellDetailLabel stringByAppendingString:[song valueForProperty: MPMediaItemPropertyTitle]];
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
1)这个代码是否可以重写为Swift,它是否仍然足够流动而没有折旧?
2)我如何使用函数调用此代码?
我在做一些编程时昨晚在互联网上搜索,我注意到有一个有趣的测试,雇主有时会用它来测试程序员,看看他们是否真的可以将代码应用于现实世界的问题.它被称为FizzBuzz测试,它的工作原理如下.
"编写一个打印数字1到100的程序.但是,对于3的倍数,打印"Fizz"而不是数字和5的倍数,打印"Buzz".对于数字是三和五的倍数打印" FizzBuzz ""
现在,我坐下来很快就想出了这个代码,我把它放在了viewDidLoad方法中:
for i in 1...100 {
if i % 3 = 0 && i % 5 == 0 {
print("FizzBuzz")
} else if i % 3 == 0 {
print("Fizz")
} else if i % 5 == 0 {
print("Buzz")
} else {
print(i)
}
}
Run Code Online (Sandbox Code Playgroud)
而且,虽然这符合要求,但我觉得非常不满意使用它作为我的解决方案(对我来说似乎太简单和基本).
我最近读过Matt Neuburg的书"iOS 9编程基础与Swift"(这本书让我大开眼界,在很多层面上睁开眼睛).我试图尽可能地使用Swift-y(传递函数等)而着迷.然后,我开始意识到我真的不知道如何改进这段代码.
因此,我转向Swift社区,希望您能够更好地了解有关FiizBuzz测试问题的最复杂的Swift答案.
我正在拼命地尝试改进我的Swift编程,并希望了解一种更好的Swift-y编程方法.
我想使用Swift按钮以编程方式禁用或启用自动旋转功能.我当时认为它可以以某种方式使用该supportedInterfaceOrientations()
功能完成,但在查看有关如何完成的文献后我感到非常困惑.有一个简单的解决方案吗?
有人可以给我建议或起点吗?
swift ×5
ios ×4
swift2 ×3
swift3 ×2
swiftui ×2
gesture ×1
ios9 ×1
iphone ×1
loops ×1
mpmediaitem ×1
mpmediaquery ×1
offset ×1
outer-join ×1