Tag: 快速

核心数据迁移:无法将types“NSManagedObject_MyType”的值转换为“MyModule.MyType”

我正在做一个“中等重量”的核心数据迁移。 我正在使用映射模型从一个传统存储/数据模型迁移到不同的存储和不同的模型(即完全不同的.xcdatamodeld )文件,并在适用的情况下使用自定义的NSEntityMigrationPolicy对象。 以前我有各种与对象图无关的对象,现在我想拥有一个主对象Library ,使我能够轻松地清除所有关联的数据(使用级联删除规则)。 由于NSEntityMigrationPolicy子类中的自定义方法,我在迁移过程中遇到了问题: class LegacyToModernPolicy: NSEntityMigrationPolicy { func libraryForManager(_ manager: NSMigrationManager) -> Library { let fetchRequest: NSFetchRequest<Library> = NSFetchRequest(entityName: Library.entity().name!) fetchRequest.predicate = nil fetchRequest.sortDescriptors = [NSSortDescriptor(key: "filename", ascending: true)] fetchRequest.fetchLimit = 1 do { // will fail here if NSFetchRequest<Library> let results = try manager.destinationContext.fetch(fetchRequest) log.info("results: \(results)") if results.count == 1 { […]

如何更新DetailView

我有一个基于Master-Detail模板的快速应用程序。 MasterView表中的每一行都基于从nib收到的自定义单元格。 每个单元格都包含UIlabel和UIbutton 。 该应用程序的逻辑如下。 如果用户点击一行DetailView显示一些细节取决于选定的行。 该行上的button不调用tableView(_, didSelectRowAtIndexPath) 。 如果用户点击一行内的button,只有属于DetailView的图像应该被更改( DetailView上的其他元素保持不变),但不是。 如果我select另一行并且select上一行,则更改后的图像将显示在DetailView ,如前所述。 问题是如何通过点击button来重绘DetailView的图像。 我试图做跟随,但没有成功: class MasterViewCell: UITableViewCell { weak var detailViewController: DetailViewController? @IBAction func buttonTap(sender: AnyObject) { //method to set new image detailViewController!.setNewImage() detailViewController!.view.setNeedsDisplay() } } class MasterViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() let nib = UINib(nibName: "itemCell", bundle: nil) tableView.registerNib(nib, forCellReuseIdentifier: […]

iOS FCM没有得到推送通知

由于我更新到迅速3,FCM不起作用。 在Capabilities中启用Push Notifications ,并在Firebase控制台上更新证书。 顺便说一下,在Android应用程序的fcm工作得很好,它在ios上工作,但在swift 3和新的firebase库更新后,它不。 AppDelegate.swift: class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? let notificationCenter = NotificationCenter.default var connectedToFcm: Bool = false func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) application.registerUserNotificationSettings(settings) application.registerForRemoteNotifications() FIRApp.configure() NotificationCenter.default.addObserver(self, selector: #selector(self.tokenRefreshNotification), name: NSNotification.Name.firInstanceIDTokenRefresh, object: nil) […]

如何将MTLTexture转换为CVpixelBuffer写入AVAssetWriter?

我有一个要求,在实时video应用filter,我想在金属做。 但是,在将滤镜编码到目标滤镜之后,我遇到了将MTLTexture转换为CVPixelBuffer的问题。 参考( https://github.com/oklyc/MetalCameraSample-master-2 ) 这是我的代码。 if let pixelBuffer = pixelBuffer { CVPixelBufferLockBaseAddress(pixelBuffer, CVPixelBufferLockFlags.init(rawValue: 0)) let region = MTLRegionMake2D(0, 0, Int(currentDrawable.layer.drawableSize.width), Int(currentDrawable.layer.drawableSize.height)) let bytesPerPixel = 4; let bytesPerRow = CGFloat(bytesPerPixel) * currentDrawable.layer.drawableSize.width let tempBuffer = CVPixelBufferGetBaseAddress(pixelBuffer) destinationTexture.getBytes(tempBuffer!, bytesPerRow: Int(bytesPerRow), from: region1, mipmapLevel: 0) let image = self.imageFromCVPixelBuffer(buffer: pixelBuffer) CVPixelBufferUnlockBaseAddress(pixelBuffer, CVPixelBufferLockFlags.init(rawValue: 0)) } imageFromCVPixelBuffer方法看起来像这样。 func imageFromCVPixelBuffer(buffer: […]

swift – 纠结/交叉代码的方法(logging,分析等)

在处理类似分析的事情时,我通常会有一个对象,用于侦听Notification或在业务逻辑中的对象上调用方法。 这一直困扰着我,但我还没有find一个更好的模式。 例如,下面的代码分散在各处,混乱了业务逻辑。 class SomeService { private let analytics: AnalyticsGateway func doAllTheThings() { analytics.trackStart(with: context) somethingApiClient.doSomething { error guard error = nil else { analytics.trackError(error) analytics.trackFailure("doSomething", with: context) } analytics.trackSuccess("doSomething", with: context) } do { try someOtherApiClient.doSomethingElse { [unowned self] mappedObject guard let mappedObject = mappedObject else { analytics.trackFailure("doSomethingElse", with: context) return } guard validator.validate(mappedObject) […]

Swift iOS:使用以下代码泄漏内存(video播放器)

我用游戏中的永久循环播放全屏video(用于背景)。 它工作的很好,但是当我改变视图时,我得到这个代码上的Instruments(内存泄漏模板)标识的内存泄漏: urlStr = NSBundle.mainBundle().pathForResource("Video_Socle", ofType: "mov") let url = NSURL(fileURLWithPath: urlStr!) player = AVPlayer(URL: url) NSNotificationCenter.defaultCenter().addObserverForName(AVPlayerItemDidPlayToEndTimeNotification, object: player!.currentItem, queue: nil) { notification in let t1 = CMTimeMake(5, 100); self.player!.seekToTime(t1) self.player!.play() } videoNode = SKVideoNode(AVPlayer: player!) videoNode!.anchorPoint = CGPointMake (0,0) videoNode!.size = CGSize(width: 2048, height: 1536) videoNode!.zPosition = 0 background.addChild(videoNode!) if synch == false { […]

删除导航栏下面的阴影线,而不删除栏颜色?

我已经尝试了许多类似问题的答案,但是他们都没有为我工作。 我试图删除导航栏1px的阴影,但我试过的一切结束删除栏的颜色,并使其白色/浅色。 任何想法如何删除它(在App Delegate内?) func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { let redPart: CGFloat = CGFloat(65) / 255 let greenPart: CGFloat = CGFloat(107) / 255 let bluePart: CGFloat = CGFloat(166) / 255 UINavigationBar.appearance().shadowImage = UIImage() UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) UINavigationBar.appearance().barTintColor = UIColor(red: redPart, green: greenPart, blue: bluePart, alpha: 1.0) //Set the colors for […]

如何在父视图控制器和子视图控制器之间传输数据

我曾试着在类似的问题上看到这个答案,但我不是特别有经验,并且遇到了麻烦,所以任何帮助将不胜感激! 我的情况如下:当我按下我的父ViewController中的button,下面的代码是用来调用一个Child ViewController(顺便说一句,孩子实际上是一个TableViewController,但它似乎工作正常“思考”这是一个正常的视图控制器)? controller = (storyboard?.instantiateViewController(withIdentifier: "People")) addChildViewController(controller!) controller?.view.frame = CGRect(x: 10, y: 200, width: 394, height: 300) self.view.addSubview((controller?.view)!) controller?.didMove(toParentViewController: self) 然后我会喜欢将一个数组从Parent传递给Child,在那里它将被用作TableView的数据? 其次,当我从Child的TableView中select一个单元格时,我想将相关信息发送给Parent,并让Child消失。 如果感兴趣的话,我可以使用以下方法,在不同的情况下(当孩子显示时在父母身上发生点击)设法closures孩子: controller?.willMove(toParentViewController: nil) controller?.view.removeFromSuperview() controller?.removeFromParentViewController() 我真的很感激任何build议,即使它是一个有用的东西的链接!

如何使用Swift 3和Alamofire从JSON下载图像?

如何使用Alamofire和Swift 3从JSON下载图像? 我正在获取数据字典。 看到下面的JSON响应。 我能够在标签中打印数据,但是我无法下载图像。 这是我从API获得的回应。 userJson userJson userJson userJson [“status”:1,“student”:{“admission_date”=“14/06/2017”; “admission_no”= 13538; “class_teacher”=“Caroline Forbes”; dob = “2001年4月5日”; 电子邮件=“ranisagar.sivadas@gmail.com”; “father_name”=“SAGAR SIVADAS”; 性别=男性; image = “/system/images/86/j1f9DiJi_medium.jpg?1504593436”; “mother_name”=“RANI RS”; name =“Abhijith Sagar”; 电话= 9066260799; 宗教=印度教; “school_email”=“13538.861@demo.in”; “student_id”= 86; }, “消息”:细节获取成功。] 这是我的代码。 func SetUpUIProfiledata() { APIManager.sharedInstance.getParentDataFromURL(){(userJson)-> Void in let swiftyJsonVar = JSON(userJson) print("userJson userJson userJson userJson",userJson) print("swiftyJsonVar",swiftyJsonVar) let […]

检测标注与MKMapView中的其他UIViews重叠

我有一些显示在MKMapView上的MKMapView作为控件来过滤地图的内容,我的mapView有注释,可以显示标注。我想创build一个效果,如果我的标注出现或滚动,我的覆盖层将消失在重叠之下并且在标注没有占据位置之后再次可见。 有没有办法找出如果一个MKMapView的标注重叠UIView ? 我努力了: 访问标注frame以检查它是否与叠加层相交 – 无法访问标注。 计算标注出现的位置并跟踪滚动,以计算标注是否在叠加层下方 – 无法预测标注出现的行为 – 如何转换以避免popup屏幕外 制作叠加控件需要单独的屏幕空间,因为地图变得太小,某些屏幕区域变得空闲,因为控件不占用矩形空间。 如果没有解决我的问题,将使用此作为最后的手段。 编辑 我做了我想要的效果gif 蓝色方块代表控件,红色代表标注,基本上我想让我的覆盖控件在地图下方消失。