我正在创建一个类似于 dropbox 的应用程序(快速),我想创建一个选项“将文件添加到应用程序名称”并将其添加到右键菜单中。单击后,我希望打开应用程序并加载文件,以便用户决定将其保存在哪里。我广泛浏览了网络,但找不到任何其他资源来寻求帮助。仅寻求有关添加菜单选项的帮助。
在watchOS 4.0(Xcode 9.0 beta 6)中执行后台任务时,我收到类似于下面的错误消息.它们似乎没有引起任何问题,但我不确定.有没有人知道是什么导致这些错误被记录,如果有修复或方法来抑制它们?
2017年8月24日09:03:40.130009-0400 cfanow关注应用信息[6906:377766] [bg_app_refresh] - [WKRefreshBackgroundTask cleanupStorage] _block_invoke:213:错误试图到达文件:///用户/ justindomnitz /库/开发/ CoreSimulator /设备/ 264AA014-FD6C-426A-88DF-64E502393BAF /数据/容器/数据/ PluginKitPlugin/107681EE-B30E-49CD-9416-8F030D1CA0BF /库/ com.apple.watchkit/bktasksnapshot_(空):错误域= NSCocoaErrorDomain代码= 260"无法打开文件"bktasksnapshot_(null)",因为没有这样的文件." 的UserInfo = {NSURL =文件:///用户/ justindomnitz /库/开发商/ CoreSimulator /设备/ 264AA014-FD6C-426A-88DF-64E502393BAF /数据/容器/数据/ PluginKitPlugin/107681EE-B30E-49CD-9416-8F030D1CA0BF /库/ com.apple.watchkit/bktasksnapshot_(空),NSFilePath = /用户/ justindomnitz /库/开发商/ CoreSimulator /设备/ 264AA014-FD6C-426A-88DF-64E502393BAF /数据/容器/数据/ PluginKitPlugin/107681EE-B30E- 49CD-9416-8F030D1CA0BF /库/ com.apple.watchkit/bktasksnapshot_(空),NSUnderlyingError = 0x79f3f3c0 {错误域= NSPOSIXErrorDomain代码= 2 "没有这样的文件或目录"}}
我请求 API 向我发送一些数据,我可以成功检索这些数据,但我仍停留在它的解码过程中。这是我收到的 JSON:
[
{
"challenge_id":1,
"challenge_title":"newchallenge1",
"challenge_pts_earned":1000,
"challenge_description":"description1",
"start_date":"2017-09-24T00:00:00.000Z",
"end_date":"2017-09-24T00:00:00.000Z",
"challenge_category_id":1,
"status_id":2,
"createdAt":"2017-09-24T17:21:47.000Z",
"updatedAt":"2017-09-24T09:40:34.000Z"
},
{
"challenge_id":2,
"challenge_title":"challenge1",
"challenge_pts_earned":100,
"challenge_description":"description1",
"start_date":"2017-09-24T00:00:00.000Z",
"end_date":"2017-09-24T00:00:00.000Z",
"challenge_category_id":1,
"status_id":0,
"createdAt":"2017-09-24T17:22:12.000Z",
"updatedAt":"2017-09-24T09:22:12.000Z"
},
{
"challenge_id":3,
"challenge_title":"new eat title",
"challenge_pts_earned":600000,
"challenge_description":"haha",
"start_date":"2017-01-09T00:00:00.000Z",
"end_date":"2017-01-10T00:00:00.000Z",
"challenge_category_id":2,
"status_id":0,
"createdAt":"2017-09-27T17:12:10.000Z",
"updatedAt":"2017-09-27T09:15:19.000Z"
}
]
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建以下结构来对其进行解码:
struct challenge : Codable {
let id : String?
let title : String?
let pointsEarned : String?
let description : String?
let dayStarted : String?
let dayEnded : String?
let categoryID : String?
let statusID …Run Code Online (Sandbox Code Playgroud) static func saveContext (context: NSManagedObjectContext = getContext()) {
if context.hasChanges {
do {
try context.save()
} catch let nserror as NSError {
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
(我把它放在保存 CoreData 上下文上)
当我抛出 fatalError 时,Xcode 本身每次都会崩溃,我必须再次打开它。
也许有人知道如何解决它或什么?
我正在尝试使用文件夹引用模式将许多 Objective-C 文件添加到我的 Swift 项目中,这意味着当我将文件拖放到项目中时,我选择“创建文件夹引用”。
这是因为我所有的 obj-c 文件都使用#include "/folder/folder/folder/"example. 这些文件是用j2objc生成的项目生成的。
现在我的问题是当我想要#import或Xcode 中的#include某些.h文件myproject-Bridging-Header.h找不到头文件时。我用#import "/folder/folder/folder/"类似生成的文件,但没有机会。
我$(PROJECT_DIR)/在构建设置 - 搜索标头路径中添加,但它确实需要完全像$(PROJECT_DIR)/folder/folder/folder/. 有什么方法可以设置主文件夹和 Xcode 查找子文件夹吗?或者我需要单独写每个路径?
例如,当用户同时按下数字表冠和侧面按钮(又名截屏)时,本机锻炼应用程序和 Sportstracker 能够暂停锻炼。
我需要这样的东西,但我在文档或网上其他地方找不到任何有关它的信息。对于 iOS,有“notificationUIApplicationUserDidTakeScreenshot”,但这在 watchOS 上不起作用。
有人知道怎么做吗?它是公开可用的还是私有 API?是我看起来不够好吗?
我正在使用UIVideoEditorController,但是成功委托方法为我调用了两次。但是,所有传递的对象的所有指针都告诉它发送完全相同的数据。
let editor = UIVideoEditorController()
editor.videoMaximumDuration = 10.0
editor.videoQuality = .typeIFrame1280x720
editor.delegate = self
editor.videoPath = // some path goes here
self.present(editor, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
然后,以下方法将“ here”打印两次。
func videoEditorController(_ editor: UIVideoEditorController, didSaveEditedVideoToPath editedVideoPath: String) {
print("here")
self.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud) 以一个非常接近在下面看一下:
// Note that this protocol can only be applied to reference types.
protocol Ref: class {
var zibbles: Int { get set }
}
class Reference: Ref {
var zibbles: Int = 42
}
// Note very carefully that we are NOT passing an
// instance, but a type itself.
func thwip<T: AnyObject>(into target: T.Type) {
}
// This compiles.
thwip(into: Reference.self)
// This fails to compile.
thwip(into: Ref.self)
Run Code Online (Sandbox Code Playgroud)
无论情况多么罕见,这是语言应该能够完成的事情.编译器知道Ref必须符合的任何实例AnyObject,因此类型约束thwip应该可以工作,但事实并非如此.
请注意,如果我们 …
好...这很难解释(也很难给它起一个标题),但是我会尽力而为。
我们在使用Carthage导入东西时首先发现了这一点,但是在Xcode中设置了一个示例项目(不使用Carthage),似乎已经做了同样的事情。
首先,这是我们设置的示例项目的屏幕截图...
该有一个目标Test20000,它有一个依赖一个。
的甲框架于是具有的依赖关系乙。
该Test20000应用程序不会不加乙作为直接依赖关系。
在B中有一个类似...的结构
import Foundation
public struct BType {
public let value = "Hello, B!"
}
Run Code Online (Sandbox Code Playgroud)
在A中有一个类似...的文件
import Foundation
import B
public struct AType {
public let value = "Hello, A!"
public func doAThing() {
print(BType().value)
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在Test20000应用程序中,我们执行类似...
import Foundation
import A
struct TestType {
func doSomething() {
let aType = AType() …Run Code Online (Sandbox Code Playgroud) swift ×9
ios ×3
watchkit ×2
codable ×1
core-data ×1
frameworks ×1
j2objc ×1
json ×1
macos ×1
menu ×1
objective-c ×1
screenshot ×1
watchos-4 ×1
xcode ×1
xcode9 ×1