小编Ale*_*lex的帖子

NSPersistentStoreCoordinator线程安全吗?

我正在开发一款使用Core Data的iPhone应用程序.该应用程序调用Web服务,解析生成的XML文件,然后在我的应用程序中创建或修改Core Data对象.我已经处理了Web服务调用和异步解析,但我一直在将解析后的数据交给主线程来操作Core Data对象.我也想在后台线程中运行这个过程.(暂停1-2秒不能带来出色的用户体验)

显而易见的方法是专门为后台线程创建一个托管对象上下文,但后来我在Apple的核心数据编程指南中读到了这一行:

持久性存储协调器向其受管对象上下文提供一个虚拟存储的外观.对于完全并发的操作,您需要为每个线程使用不同的协调器.

所以这里有一个问题:您不能让两个人NSPersistentStoreCoordinator提供对同一商店的访问权限.但是,Marcus Zarra的核心数据书断言这NSPersistentStoreCoordinator 线程安全的,并将序列化I/O请求(第157页).

有人可以为我清除这个吗?是否可以在NSPersistentStoreCoordinator与主线程共享相同线程的单独线程上运行第二个托管对象上下文?或者,更简洁,是NSPersistentStoreCoordinator线程安全的?

iphone cocoa cocoa-touch core-data

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

开发简单的序列号生成器/验证器有什么好方法?

我正在开发一个我想在某天出售的应用程序 - 早点而不是晚点!我想开发一个相当简单的序列号方案来保护它.

  • 一个简单的数字/字母组合长度不超过25-30个字母数字字符(想想Microsoft产品密钥)
  • 作为验证的一部分,不要求用户输入任何个人信息(如电子邮件地址)

我一直在想这个(很少),我认为公钥加密是一个很好的起点.我可以生成一个标识许可证的字符串(如SKU + plain ole'整数序列号),哈希,加密,并将序列号+标识符编码为25位(左右)字母数字键.然后,应用程序将密钥解码为序列号和"签名",生成标识符散列,使用相应的公钥解密"签名",并将其与生成的标识符散列进行比较.

本质上,产品密钥包含两个数据:用户声称拥有的序列号以及程序可用于验证声明的各种签名.我不知道25个字母数字字符(每个编码5位,实际总计120位)是否足以满足所有这些要求.但是,它不必具有加密安全性,足以使代码不易被猜测.我可以使用短键和短哈希.

就实现而言,应用程序是用Objective-C为Mac OS X编写的,但考虑到将代码注入Cocoa应用程序是多么容易,我可能会直接编写验证代码.

language-agnostic license-key

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

NSURLConnection,NSURLRequest,不受信任的证书和用户身份验证

大家早上好,

我一直在尝试编写一个从需要身份验证的远程Web服务执行某些GET的应用程序.我的主要问题是这些远程服务器中的大多数(并且有很多远程服务器)没有有效的证书.我有代码接受无效的证书和代码,以正确的uname&pass(下面)来响应挑战.我遇到的问题是让两人一起玩.我似乎无法找到一种方法来发送挑战NSURLCredential或正确链接回调的方法.当我试图将它们连接起来时,我无法NSURLRequest接到didReceiveAuthenticationChallenge两次电话.

任何想法将不胜感激!

认证代码......

-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{   
    if(!hasCanceled){
        if ([challenge previousFailureCount] == 0) {
            NSURLCredential *newCredential;
            newCredential=[NSURLCredential credentialWithUser:_username password:_password persistence:NSURLCredentialPersistenceNone];
            [[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
        } 
        else {
            [[challenge sender] cancelAuthenticationChallenge:challenge];
            NSLog(@"Bad Username Or Password");
            badUsernameAndPassword = YES;
            finished = YES;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

iphone cocoa nsurlconnection nsurlrequest nsurlcredential

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

多个NSViewControllers的NS(Array | Tree)控制器体系结构

我有一个非基于文档的核心数据应用程序.有一个NSTreeController管理单个显示的对象集合NSOutlineView作为源列表.它们是常见的东西:标题,文件夹,智能文件夹等.

这些容器对象中的每一个都有一组contents对象.我有三个独立的视图控制器,以各种方式显示这些对象(一个NSTableView和两个自定义图形视图,如果你真的想知道)但这些只是相同数据的三个不同的演示.它们应始终显示相同的对象,共享相同的选择等.

我也使用NSViewControllers 的层次结构来管理我的观点.(如果我当时知道Cathy Shive的优秀KTUIKit,我会用它,但是我的视觉控制器非常相似 - 并且非常受她的启发)

就像现在一样,我NSTreeController在源视图列表视图的视图控制器中占有一席之地.我NSArrayController在每个子视图控制器中都有一个绑定到NSTreeController通道的一些过于复杂的键路径.

那么,在我看来,需要改变的是:

  • NSTreeController需要迁出大纲视图的控制器.
  • NSArrayController每个内容视图都可以绑定到一个单独的视图而不是三个单独的视图.虽然我不太确定这一点.

什么我遇到的困难是找出哪里,这些东西应该活.我很难决定哪些对象(如果有的话)真正"拥有"各种控制器.父视图控制器是否拥有它?窗户控制器?由于这是应用程序级数据,我是否应该让App Delegate拥有这些数据?(我可以想象一个使用可能想要打开多个窗口的情况,虽然目前不支持)StackOverflow蜂巢思维的想法是什么?

architecture cocoa

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

NSFetchedResultsController 具有基于依赖属性的谓词

我有一个 Core Data iPhone 应用程序,可以显示Subscription其中任何items不存在的实体read。换句话说,我构建了一个这样的谓词:

[NSPredicate predicateWithFormat:@"ANY items.read == NO"]
Run Code Online (Sandbox Code Playgroud)

Subscription虽然这适用于初始获取,但当我修改 时它不会影响实体Item,因此NSFetchedResultsController永远不会重新评估Subscription实体。什么是更好的构造方法,以便在设置Subscription项目的属性时更新实体?read

我确实尝试unreadCount在 上创建一个属性Subscription并使用keyPathsForValuesAffectingUnreadCount它返回包含items.read. 我没想到这会起作用,而且没有。我收到一个异常,_NSFaultingMutableSet告诉我该read密钥不受支持。

iphone cocoa cocoa-touch core-data

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

如何使用Mac OS X Cocoa事件进行多点触控手势

我正在编写一个程序,它在NSScrollView中嵌入了一个NSView,用户可以放大.我很乐意进行设置,以便用户可以使用MacBook Air和新的unibody MacBooks/MacBooks Pro支持的多点触控捏动手势以及Safari和iPhoto等应用程序来缩放视图.我已经通过Apple的文档进行了搜索,无法弄清楚如何做到这一点.

  1. 是否支持在Mac OS X 10.5 Leopard上使用公开的API?
  2. 如果不是,私有API有多"糟糕"(例如,它只是一个未声明的常量或一组全新的方法)?

cocoa osx-leopard

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

CoreData:查找计算属性的最小值

假设我有一个CoreData实体"Point",它有两个属性x和y(两个NSNumber).

NSPredicate如何让我找到最接近的点a,b?距离= sqrt((xa)(xa)+(yb)(yb))

虽然我可以定义一个计算到预定义点的距离的瞬态属性,但我无法看到在启动fetchrequest时如何以编程方式更改该点.

任何帮助将不胜感激.

cocoa core-data nspredicate nsfetchrequest

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