因此,对于课堂作业,我必须接受用户输入并指定我的沙鼠对象每天可以使用的"食物"量.在这种情况下,我已经每天从用户那里获取最大量的食物,并且如果他们试图输入高于每日最大值的值,则需要向用户发出错误消息.
如果是这种情况,则需要重新提示他们输入沙鼠吃的食物量.
我似乎无法弄清楚如何打破"if"语句并回到"for"循环的顶部.这是我的代码:
for (int j = 0; j < numberOfFoods; j++) {
System.out.println(gerbilId[index].substring(index)
+ " eats how many " + foodNames[j] + "s per day");
int amountOfFood = keyboard.nextInt();
if (amountOfFood > foodMax[j]) {
System.out.println("Error. Please input a valid amount of food");
break;
} else {
gerbilConsumption[index] = amountOfFood;
}
}
Run Code Online (Sandbox Code Playgroud) 我还是Xcode的新手,所以请耐心等待我.无论如何,我在尝试在UILabel中显示数组的全部内容时遇到了一些麻烦.我只需使用代码即可显示它
wordList.text = [NSString stringWithFormat:@"List of Words:\n %@", listA];
Run Code Online (Sandbox Code Playgroud)
然而,在运行时,标签最终显示括号和单独的行上的单词,以及单词周围的引号,以及每个单词之间的行中的结束引号和逗号.例:
List of Words:
(
"apple
",
"banana
",
"etc.
Run Code Online (Sandbox Code Playgroud)
虽然我确实希望单词以自己的行显示,但我不希望括号和右引号和逗号显示在单独的行中.我也希望一起删除括号,引号和逗号,但如果我不能,我不会介意太多.
任何人都可以解释为什么它被显示为这样,并帮助我在UILabel中自己正确显示数组中的每个单词?
我们可以在应用程序背景中检测信标(iOS和Android).我看到Eddystone信标有iOS背景的问题.怎么解决这个?
我正在尝试更改Button
tvOS 上SwiftUI 的颜色。
修改background
几乎可以工作,除了您可以看到底层UIButton
实际上是在背景顶部使用圆形的半透明图像。这会导致矩形背景位于圆形图像之外的角落处的颜色不同。
添加.padding
强调了这个问题:
struct ContentView: View {
@State
var selected = false
var body: some View {
Button(action: {
self.selected.toggle()
}) {
Text($selected.wrappedValue ? "On":"Off")
.foregroundColor(.white)
}.padding(.all)
.background(self.selected ? Color.green : Color.blue)
}
}
}
Run Code Online (Sandbox Code Playgroud)
一个相关的问题是更改“焦点”视图的颜色,因为我怀疑这是与按钮本身相同的视图,转换了大小和颜色。
tvOS 中带有 a 的典型技术UIButton
是更改按钮图像,但似乎没有任何方法可以访问底层UIButton
.
我相信我已将其缩小到此代码:
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
NSArray *array = [NSArray arrayWithArray:users];
NSLog(@"%@",array);
searchResults = [array filteredArrayUsingPredicate:resultPredicate];
NSLog(@"SR: %@",searchResults);
searchResults = array;
}
Run Code Online (Sandbox Code Playgroud)
我从NSMutableArray开始users
并将其"转换"为数组,创造性地命名array
.从这里我尝试用Predicate过滤数组.在这一点上searchResults
变得看似空洞NSLog
.
这里发生了什么?为什么这会崩溃?如果我忽略Predicate函数并在数组中给searchResults两个对象,无论我输入什么,前两个单元格users
都会出现.我尝试的其他所有内容都会让应用程序崩溃.
当应用程序崩溃时,我得到以下内容,非常有帮助(讽刺)控制台日志:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFString 0x165025b0> valueForUndefinedKey:]:
this class is not key value coding-compliant for the key name.'
*** First throw call stack:
(0x28fdbc1f 0x36786c8b 0x28fdb929 0x29cbe5ab 0x29c25677 0x29c618c9 0x29c6148b 0x29c60477 0x29c60299 0x355fd …
Run Code Online (Sandbox Code Playgroud) 在我的代码中,我想在队列中单独处理操作,并能够暂停和恢复队列中的操作操作.我该如何实现呢?
让我简单解释一下我的问题,我使用下面的代码来创建子类NSOperation的操作,并将此操作添加到NSOperationQueue.
@interface MyLengthyOperation: NSOperation
@end
@implementation MyLengthyOperation
- (void)main
{
// a lengthy operation
@autoreleasepool
{
for (int i = 0 ; i < 10000 ; i++)
{
// is this operation cancelled?
if (self.isCancelled)
break;
NSLog(@"%f", sqrt(i));
}
}
}
@end
Run Code Online (Sandbox Code Playgroud)
我创建了上面的操作,我正在调用它
NSOperationQueue *myQueue = [[NSOperationQueue alloc] init];
myQueue.name = @"Download Queue";
myQueue.maxConcurrentOperationCount = 4;
[myQueue addOperation:operation];
Run Code Online (Sandbox Code Playgroud)
现在我想暂停并恢复我的操作.让我们假设循环在6786上,我按下暂停按钮,然后队列应暂停此操作,当我按下启动时,它应该从6786开始.
我想控制队列中的多个操作.我怎样才能做到这一点 ?
我看了[queue setSuspended:YES];
- 这将阻止队列添加新操作,但我想控制队列中的现有操作.
等待你的答案.
提前致谢 !
我有一个UITextField
随着UIPickerView
从一个将其值设置enum
和保存按钮,用户按下保存他们的选择.
我的问题是,有没有办法错误陷阱此设置,所以当用户按下保存时,它将确认该值UITextField
是我的枚举成员?
我担心的是文本字段留空或粘贴了替代值.
所以我正在创建一款纸牌游戏Ring of Fire.我存储了这样的图像:
var picture:[UIImage] = [
UIImage(named: "Card2")!,
UIImage(named: "Card3")!,
UIImage(named: "Card4")!,
UIImage(named: "Card5")!,
UIImage(named: "Card6")!,
UIImage(named: "Card7")!,
UIImage(named: "Card8")!,
UIImage(named: "Card9")!,
UIImage(named: "Card10")!,
UIImage(named: "CardJack")!,
UIImage(named: "CardQueen")!,
UIImage(named: "CardKing")!,
UIImage(named: "CardAce")!,
]
Run Code Online (Sandbox Code Playgroud)
每张卡片都有当前卡片下方显示的文字:
var name:String = ""
var files = ["Velg en som må drikke", // 2
"Drikk selv", // 3
"Alle jenter må drikke", // 4
"Tommelen", // 5
"Alle gutter må drikke", // 6
"Pek på himmelen", // 7
"Drikkepartner", // 8
"Rim", // 9
"Kategori", …
Run Code Online (Sandbox Code Playgroud) 为什么下面的代码在主线程中运行,虽然我已经为后台线程指定了qos?
func testQueue(){
let queue = DispatchQueue(label: "com.appcoda.myqueue",qos:.background)
queue.sync {
if Thread.isMainThread{
print("is in main thread")
}else{
print("is i background thread")
}
for i in 100..<110 {
print("??", i)
}
}
}
testQueue()
Run Code Online (Sandbox Code Playgroud)
每当我尝试运行该方法时,我会在控制台中获取msg is in main thread
,但不应该是这种情况.我正在阅读本文.
http://www.appcoda.com/grand-central-dispatch/
请参阅"调度队列入门"部分.
我正在开发Mac应用程序。我一直在努力在Mac OS的“ 桌面 ”中创建目录。我在High Sierra上工作。一切正常,但突然之间该应用无法在桌面中创建目录。我收到以下权限错误。我正在使用Xcode 9.3和Swift 4.1。
Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “TestDir” in the folder “Desktop”." UserInfo={NSFilePath=/Users/sj/Library/Containers/com.user.TestSync/Data/Desktop/TestDir, NSUnderlyingError=0x60400044cc60 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
class DBManager: NSObject {
static func getDirectoryPath() -> URL {
let homeDirectory = URL(fileURLWithPath: NSHomeDirectory())
let desktopPath = homeDirectory.appendingPathComponent("Desktop")
let databaseFolder = desktopPath.appendingPathComponent("TestDir")
return databaseFolder
}
static func createFolderIfNotExist() {
let databaseFolder = DBManager.getDirectoryPath()
if !FileManager().fileExists(atPath: databaseFolder.path) {
do {
try FileManager.default.createDirectory(atPath: databaseFolder.path, withIntermediateDirectories: true, attributes: nil)
} …
Run Code Online (Sandbox Code Playgroud)