小编Zen*_*n C的帖子

应用程序图标未出现在 ios 的应用程序切换器中

我最近使用https://makeappicon.com为我的 ios 应用程序开发了一组图标。这提供了一个包含适当大小图像的文件夹。然后,我将这些图像中的每一个拖到 Assets.xcassets 中 AppIcon 部分的相应插槽中。该图标在我的手机屏幕上显示得很好,但在应用程序切换器中却没有显示(见图片中圈出的)。没有错误显示。

在此处输入图片说明

我有: - 清理构建文件夹并重建 - 我已经重新启动了我的 iPhone - 我已经手动将所有图像放在插槽中 - 我还尝试用 make appicon 提供的文件夹替换原始 AppIcon 文件夹

都无济于事。对任何建议表示感谢。

xcode ios swift appicon

9
推荐指数
2
解决办法
2220
查看次数

为什么前导滑动操作也重复为尾随操作?

我在我的 tableView 上实现了一个前导滑动操作(“删除”),由于我无法弄清楚的原因,它也显示为尾随滑动操作。参见下面的代码:

func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) ->
    UISwipeActionsConfiguration? {
    let delete1 = deleteAction(at: indexPath)
    return UISwipeActionsConfiguration(actions: [delete1])
}

func deleteAction(at indexPath: IndexPath) -> UIContextualAction {
    let action = UIContextualAction(style: .destructive, title: "Delete") { (action, view, completion) in
        self.delete(at: indexPath)
    }
    return action
}
Run Code Online (Sandbox Code Playgroud)

我曾经有一个拖尾滑动动作,但我完全删除了这个功能。当我将 'leadingSwipeActionsConfigurationForRowAt' 更改为 'trailingSwipeActions...' 时,仅显示尾随滑动操作。如果有人能告诉我我错过了什么,我将不胜感激。谢谢。 尾随滑动

领先的滑动

uitableview swift uiswipeactionsconfiguration

5
推荐指数
1
解决办法
844
查看次数

SwiftUI 和编译器无法在合理的时间内对该表达式进行类型检查

我正在尝试使用 SwiftUI 和核心数据实现列表视图,但遇到“编译器无法在合理的时间内对该表达式进行类型检查”错误。该列表包含“课程”,每种“类型”的课程都会导致不同类型的游戏,但是,当我输入导致相关游戏链接的 if、else if 条件时会出现错误。我从其他帖子中了解到应该将代码分解为更简单的部分,但我想知道这样做的最佳方法是什么,尤其是对于条件语句。我尝试过的一种方法是使用特定的 @FetchRequests 一次提取一个特定的课程,虽然这可以填充列表,但当实体从另一个视图更新时会产生意外行为。有关该问题的更多详细信息,请参见此处:在另一个 View 中更新 Core Data 实体后,SwiftUI 列表视图未更新。对于如何简化此代码或如何避免此错误的任何建议,我将不胜感激。顺便说一下,这个错误只有在使用核心数据时才会出现;当我通过使用 swift 文件中的类直接“硬编码”对象时,不会出现此错误。

import SwiftUI
import CoreData
import UIKit

struct LessonList: View {

@Environment(\.managedObjectContext) var moc
@FetchRequest(entity: Lesson.entity(), sortDescriptors: []) var lessons: FetchedResults<Lesson>

var body: some View {

    NavigationView {

        List {
            Section(header: Text("Test")) {
                ForEach(lessons) { lesson in
                    if (lesson.stage == 1) && (lesson.type == "phonicIntro") {
                        NavigationLink(destination: PhonicIntroGame(lesson: lesson)) {
                            LessonRow(lesson: lesson)
                        }
                    } else if (lesson.stage == 1) && (lesson.type == "phonicDrag") …
Run Code Online (Sandbox Code Playgroud)

core-data swift swiftui

5
推荐指数
1
解决办法
2093
查看次数

在另一个视图中更新核心数据实体后,SwiftUI 列表视图未更新

我有一个存储在核心数据中的课程实体,其变量之一是存储课程是否完成。

这些课程列在 SwiftUI 列表中,选择后会转到游戏所在的视图。游戏完成后,complete 变量将更新为 true。应该发生的情况是列表视图显示列出的游戏,并在游戏旁边显示一个复选标记。

然而,发生的情况是,当我在游戏中保存课程的“已完成”状态时(在 tapRight 方法中 - 见下文),我收到警告:

[TableView] 仅警告一次:UITableView 被告知在不位于视图层次结构中的情况下布局其可见单元格和其他内容(表视图或其超级视图之一尚未添加到窗口中)。

然后,当我通过按游戏视图顶部的导航按钮返回列表视图时,我发现游戏已从列表中消失。

但是,当我关闭应用程序并重新打开它时,列表中包含游戏行和复选标记,因此我知道核心数据课程实例正在正确更新。下面的列表视图代码。

import SwiftUI
import CoreData
import UIKit

struct LessonList: View {

@Environment(\.managedObjectContext) var moc

@State private var refreshing = false
private var didSave =  NotificationCenter.default.publisher(for: .NSManagedObjectContextDidSave)

@FetchRequest(entity: Lesson.entity(), sortDescriptors: [], predicate: NSPredicate(format: "(type == %@) AND (stage == %@) AND ((complete == %@) OR (complete == %@))", "phonicIntro", "1", NSNumber(value: true), NSNumber(value: false) )) var phonicIntroLessons1: FetchedResults<Lesson>

var body: some View {

    NavigationView {      
        List …
Run Code Online (Sandbox Code Playgroud)

core-data swift swiftui

4
推荐指数
1
解决办法
1942
查看次数

音频正在模拟器中播放,但不在设备上

我正在开发一个播放音频文件的应用程序,可以让文件与 xcode 模拟器(v10.2)中的 AVPlayer 实例一起播放,但是当尝试在我的设备上播放时,音频文件无法播放。

我已阅读对同一问题的回复并已检查:

  • 设备上的静音铃声开关未打开
  • 我没有在 viewDidLoad 中实例化 AVPlayer
  • 音频文件的名称在代码中与文件中的大小写相同

以下是我设置记录器的代码:

func setUpRecorder(storyItem : StoryItem) {

    // Generate unique ID for recording for the StoryItem
    let uuid = UUID().uuidString + ".m4a"

    let audioFileName = getDocumentDirectory().appendingPathComponent(uuid)

    do {
        try self.realm.write {
            // storyItem.recording = audioFileName.absoluteString
            storyItem.recording = uuid
        }
    } catch {
        print("Error saving recording \(error)")
    }
    self.createStoryTableView.reloadData()

    let recordSettings = [AVFormatIDKey : kAudioFormatAppleLossless,
                          AVEncoderAudioQualityKey : AVAudioQuality.max.rawValue,
                          AVEncoderBitRateKey : 320000,
                          AVNumberOfChannelsKey : 2,
                          AVSampleRateKey : 44100.0 ] as [String …
Run Code Online (Sandbox Code Playgroud)

m4a avplayer swift

2
推荐指数
1
解决办法
590
查看次数