小编R M*_*nke的帖子

将拾取的图像保存到CoreData

我可以从照片库中选择并显示图像,但我的目标是能够将选择的图像或文件路径保存到核心数据,以便在选择保存的记录时也会显示图像.

我有CoreData工作,我能够从CoreData显示文本很好,它只是图像阻止我.

@IBAction func addPic(sender: AnyObject) {
pickerController.delegate = self
pickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
// 2
self.presentViewController(pickerController, animated: true, completion: nil)

// Displays image
func imagePickerController(picker: UIImagePickerController!,didFinishPickingMediaWithInfo info: NSDictionary!){
image.image = info[UIImagePickerControllerOriginalImage] as? UIImage

self.dismissViewControllerAnimated(true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

core-data uiimagepickercontroller uiimage swift

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

迅捷管理记忆

这个问题已经清理完毕,重要的信息转移到下面的答案.


我对内存管理有一些疑问.

我正在构建一个照片编辑应用程序.因此,保持低内存使用率非常重要.此外,我不会发布代码,因为在执行某项特定操作时我没有大量内存泄漏.我只是丢失了几个KB/MB的所有发生的事情.通过成千上万行代码来查找千字节并不好玩;)

我的应用程序使用核心数据,许多cifilter东西,位置和基础知识.

我的第一个视图只是一个tableview,花了我大约5mb的内存.然后你拍摄一些照片,应用一些过滤器,这会保存到核心数据然后你回到第一个视图.

除了驱动第一个视图所需的数据之外,是否有可能真正摆脱内存中的所有内容.(非常节省和令人敬畏的5mb)

或者即使你把所有东西都设为零,总会留下一些东西?


奖金问题:UIImageJPEGRepresentation和 之间的文件大小/ CPU负载是否存在差异UIImagePNGRepresentation?我知道你可以用JPEG方法设置压缩质量(在cpu/gpu上更难?).

只是尽可能地减少记忆压力.


更新:

有人向我指出,这个问题可能过于含糊.

我在某些时候遇到的问题如下:

  • 在某些时候,峰值内存使用率太高
  • 导航到第二个视图控制器并返回导致泄漏
  • 编辑图像会导致内存泄漏.
  • 将过滤器应用于4-5个以上的图像会因内存不足而导致崩溃,此时不再有内存泄漏.(在文书中核实)

这些都是在iPhone 4s上测试的,而不是模拟器.

这里有一个模因来减轻这个网站的情绪.

memory-management ios automatic-ref-counting swift

25
推荐指数
2
解决办法
3万
查看次数

UILabel的动画文本更改

我想为UILabel中的文本更改添加动画效果.

例如:旧文本向上移动,新文本从底部移动.

我已经意识到我需要标签.一个用于旧的,一个用于新文本.第二个UILabel位于第一个下面.然后两个都动起来了.

但是,你如何切断第一个标签,因为它通过框架的顶部动画?

ios swift

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

无法读取未定义的属性“disguiseToken”

这个问题是关于属性disguiseToken本身,而不是直接关于错误。

disguiseToken没有出现在代码库中,谷歌搜索也没有出现任何东西。

  • 什么是disguiseToken
  • 它是什么属性?
  • 什么试图访问此属性?

调用时发生错误getOwnPropertyDescriptor


示例堆栈跟踪:

TypeError: Cannot read property 'disguiseToken' of undefined
at getOwnPropertyDescriptor (eval at  (:1:38695), :560:24)
at Function.Object.getOwnPropertyDescriptor (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:39700)
at a (https://www.mywebsite.com/main.25a9fda6ea42f4308b79.js:1:1075141)
at https://www.mywebsite.com/5.6c58d8732681a35a1f8b.js:1:1533
at Object.26NW (https://www.mywebsite.com/5.6c58d8732681a35a1f8b.js:1:1805)
at i (https://www.mywebsite.com/runtime.8928e149b3f1200cf1ca.js:1:507)
at Module.L6id (https://www.mywebsite.com/5.6c58d8732681a35a1f8b.js:1:62181)
at i (https://www.mywebsite.com/runtime.8928e149b3f1200cf1ca.js:1:507)
at https://www.mywebsite.com/main.25a9fda6ea42f4308b79.js:1:914848
at t.invoke (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8160)
at M (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:14076)
at M (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:13634)
at https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:14864
at t.invokeTask (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8844)
at Object.onInvokeTask (https://www.mywebsite.com/main.25a9fda6ea42f4308b79.js:1:467756)
at t.invokeTask (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8765)
at e.runTask (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:4026)
at g (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:11111)
Run Code Online (Sandbox Code Playgroud)

此错误发生在具有不同引擎的多个浏览器中。在过去的 3 个月中(今天是 …

javascript browser

14
推荐指数
1
解决办法
892
查看次数

newComputePipelineStateWithFunction失败

我试图让一个神经网络在金属上运行.基本思想是数据重复.每个gpu线程为随机数据点运行一个网络版本.

我写过其他着色器工作正常.

我还在c ++命令行应用程序中尝试了我的代码.没有错误.也没有编译错误.

我使用apple文档转换为metal c ++,因为不支持c ++ 11中的所有内容.

它在加载内核函数后以及在尝试分配newComputePipelineStateWithFunction给金属设备时崩溃.这意味着在编译时未捕获的代码存在问题.

MCVE:

kernel void net(const device float *inputsVector [[ buffer(0) ]], // layout of net *
                uint id [[ thread_position_in_grid ]]) {

    uint floatSize = sizeof(tempFloat);
    uint inputsVectorSize = sizeof(inputsVector) / floatSize;

    float newArray[inputsVectorSize];


    float test = inputsVector[id];

    newArray[id] = test;

}
Run Code Online (Sandbox Code Playgroud)

更新

它与动态数组有关.

由于它无法创建管道状态并且不会崩溃运行实际着色器,因此它必须是编码问题.不是输入问题.

将动态数组中的值分配给缓冲区会使其失败.

c++ metal

11
推荐指数
1
解决办法
614
查看次数

graphql-go:使用Object作为查询的输入参数

我试图将一个对象作为参数传递给查询(而不是标量).从文档看来,这应该是可能的,但我无法弄清楚如何使它工作.

我正在使用graphql-go,这是测试模式:

var fileDocumentType = graphql.NewObject(graphql.ObjectConfig{
Name: "FileDocument",
Fields: graphql.Fields{
    "id": &graphql.Field{
        Type: graphql.String,
        Resolve: func(p graphql.ResolveParams) (interface{}, error) {
            if fileDoc, ok := p.Source.(data_format.FileDocument); ok {
                return fileDoc.Id, nil
            }
            return "", nil
        },
    },
    "tags": &graphql.Field{
        Type: graphql.NewList(tagsDataType),
        Args: graphql.FieldConfigArgument{
            "tags": &graphql.ArgumentConfig{
                Type: tagsInputType,
            },
        },
        Resolve: func(p graphql.ResolveParams) (interface{}, error) {
            fmt.Println(p.Source)
            fmt.Println(p.Args)
            if fileDoc, ok := p.Source.(data_format.FileDocument); ok {
                return fileDoc.Tags, nil
            }
            return nil, nil
        },
    },

},
})
Run Code Online (Sandbox Code Playgroud)

我试图使用的输入类型(我已尝试过InputObject和标准对象)

var tagsInputType = graphql.NewInputObject(graphql.InputObjectConfig{
Name: …
Run Code Online (Sandbox Code Playgroud)

go graphql

10
推荐指数
1
解决办法
2826
查看次数

如何将c ++代码"制作"到xcode库中

澄清澄清:我知道如何使用obj-c或swift在Xcode中创建库.我知道如何在项目中使用它们.我知道如何编译这些项目所以一切正常.我不知道的是如何采用开源C源代码(hehe)并将其构建/编译/编译到库中.


只是为了澄清下面的一切:我正在寻找一种在Swift应用程序中使用c库的方法,这意味着使用Xcode.c库不必使用/在Xcode中构建,我可以使用其他工具.


我通常会编写自己使用的所有代码,不幸的是我只在Xcode中编写Swift.所以我在使用框架/库方面有点落后.现在我真的想探索Tesseract OCR,我在构建所需的库时遇到了麻烦.对我来说,最好真正理解它是如何工作的,并且能够自己做到这一点,而不仅仅是查看Github并找到预编译的源代码.

以下项目都以不同方式处理.iOS版本使用预编译的库.(.a文件)OSX版本使用包含库文件(尚未编译)的项目.

iOS编译版

OSX编译版本

libjpeg不能只是拖放的库的示例.

使用brew只会将其安装为命令行工具,而不会生成lib.

用自制软件安装Tesseract

我遇到的问题是我对这些c库知之甚少,以及如何有效地构建它们甚至google.

我的问题:

  • 如何将c代码编译/构建到.a文件中?
  • 如何创建一个基于c代码构建框架的xcode项目?(可选的)
  • 这一切的正确词汇是什么?

我不是在寻找Tesseract的具体答案.我想自己学习如何做到这一点.

关于静态库

本文没有提到如何实际添加c程序并让xcode成功.关于工作空间的部分很有趣.

关于在Xcode中构建c项目的文章

这个实际上真的很重要.但是我在Tesseract中找不到可执行文件.执行步骤5时,所有选项都显示为灰色.

这看起来很漂亮:简单的c ++ procect 为什么tesseract看起来不那样?:)

c++ xcode frameworks static-libraries

8
推荐指数
1
解决办法
3921
查看次数

自动完成的尾随闭包语法

有谁知道为什么Xcode有时在尾随闭包时使用一种语法而不是另一种?

范例:

func someThingWithABlock(block:(() -> Void)) {

    block()

}
Run Code Online (Sandbox Code Playgroud)

这是我的首选语法:

someThingWithABlock { () -> Void in
    //
}
Run Code Online (Sandbox Code Playgroud)

但是有时候Xcode会突然给我这个:

someThingWithABlock({ () -> Void in
    //
})
Run Code Online (Sandbox Code Playgroud)

我注意到,嵌套时Xcode总是喜欢第二种语法:

someThingWithABlock { () -> Void in
    someThingWithABlock({ () -> Void in

    })
}
Run Code Online (Sandbox Code Playgroud)

但仅当嵌套在另一个尾随闭包中时:

func foo() {
    someThingWithABlock { () -> Void in
        //
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道他们在本质上是相同的。但是几天来一直困扰着我,现在我想了解更多信息,甚至可能要解决它。

swift

5
推荐指数
0
解决办法
313
查看次数

requestAccessForMediaType不要求权限

我注意到我的应用程序没有请求使用相机的权限.经过一些实验,我发现用于检查权限的代码片段需要很长时间才能完成.所以我想让我的viewdidload的那部分运行在串行队列(sync)上.在开始下一行之前强制其余部分等待auth进程完成.但这并没有真正起作用.这些行按顺序开始,但仍然没有按顺序完成.

奇怪的是,如果我只是要求权限并且不执行任何操作,没有completionHandler(如下面的代码)那么他确实第二次运行完成后使用completionHandler,尽管它仍然没有显示警告用户.这可能是因为录制视频在欧洲不需要许可吗?avcapturedevice参考

如果我想逐行执行代码,我是否需要使用障碍?或同步串行队列或??

AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { nil }())
Run Code Online (Sandbox Code Playgroud)

更新:

这种方法应该非常安全,但事实并非如此.返回true表示理所当然,但rawValue为3(拒绝)

func checkForAuthorizationStatus() {
        println("auth me")
        AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: {
            granted in
            if granted {
                println("granted: \(granted)")
                self.deviceAuthorized = true
                println("raw value: \(AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo).rawValue)")
            } else {
                self.deviceAuthorized = false
            }

        })
    }
Run Code Online (Sandbox Code Playgroud)

更新2:在下面的评论中回答. - 重置设备上的隐私设置以获取请求.

  • 授权的rawValue是3而不是4

avfoundation grand-central-dispatch swift

3
推荐指数
1
解决办法
4994
查看次数