小编Dav*_*tti的帖子

CoreData属性的Indexed属性有什么作用?

我有一个32位哈希值的核心数据模型.我需要快速查找特定的哈希值.我应该使用索引属性吗?我不知道它做了什么,文档没有帮助(我在错误的地方找?)

那么索引做什么呢?

模型

在此输入图像描述

indexing core-data

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

CoreData - 无法将空字符串设置为属性的默认值

我的datamodel中有一个实体,其字符串属性当前是可选的,我想将其转换为必需属性,其默认值为空字符串.

正如其他人发现的那样,在Xcode CoreData数据建模器中将默认值保留为空会导致验证错误(因为设计者将此解释为NULL),但尝试使用'',""或@""作为默认值会导致这些文字根据需要,字符被解释为默认字符,而不是空的零长度字符串.

我确实在谷歌上发现了这个帖子,但是,除了解决方案真的很丑陋(模型定义在.xcdatamodel和objc源之间拆分)之外,它也不适用于轻量级迁移,因为这些迁移完全基于.xcdatamodel文件和实体实现中的objc逻辑未加载.

有没有办法在数据模型设计师中实现这一目标?

migration string xcode core-data

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

objective-c运行时错误"使用未声明的标识符'objc_property_t'"

我正在尝试使用obj-c运行时方法从我的类中获取属性,我在这里的答案中找到了,但是我在编码时遇到了很多警告/错误,我是否需要导入库或制作一些东西为了让obj-c运行时函数可用?

objc_property_t*properties = class_copyPropertyList([self class],&outCount);

警告:"隐式声明函数'class_copyPropertyList'在C99中无效错误:使用未声明的标识符'objc_property_t'

这是我复制的整个块:

unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([self class], &outCount);
for (i = 0; i < outCount; i++) {
    objc_property_t property = properties[i];
    NSString *propertyName = [[NSString alloc] initWithCString:property_getName(property)];
    id propertyValue = [self valueForKey:(NSString *)propertyName];
    if (propertyValue) [props setObject:propertyValue forKey:propertyName];
}
free(properties);
Run Code Online (Sandbox Code Playgroud)

提前致谢!.

objective-c objective-c-runtime

28
推荐指数
1
解决办法
7280
查看次数

将所有流量从一个域重定向到另一个域

我想要做的是自动重定向我的一个网站的域名

www.domain1.comwww.domain2.co.uk

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain1.com\. [NC]
RewriteRule (.*) http://%www.domain2.com\%{REQUEST_URI} [R=301,NC,L]
Run Code Online (Sandbox Code Playgroud)

我查看了网站上的答案,上面是我从其他答案编辑的代码,但它不起作用.

我想在.htaccess文件中 - 这是最好的方法吗?

谢谢

.htaccess mod-rewrite

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

使用sed保留行前缀,每行拆分多个字段以分隔行

上周五我遇到了一个问题,将文本转换为另一种格式.在那台机器上,只有gnu sed可用,没有awk(奇怪,我知道).我对perl一无所知.所以我正在寻找一个唯一的解决方案.

文件内容是:

a  yao.com sina.com
b  kongu.com
c  polm.com unee.net 21cn.com iop.com foo.com bar.com baz.net happy2all.com
d  kinge.net
Run Code Online (Sandbox Code Playgroud)

所需的输出(应该是一个新文件)是:

a  yao.com 
a  sina.com
b  kongu.com
c  polm.com 
c  unee.net 
c  21cn.com 
c  iop.com
c  foo.com
c  bar.com
c  baz.net
c  happy2all.com
d  kinge.net
Run Code Online (Sandbox Code Playgroud)

我尝试了很多,也搜索了着名的sed oneliner,但我无法做到......有人可以帮助我吗?

sed

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

核心数据 - 可选属性和性能

根据核心数据编程指南:

您可以指定属性是可选的 - 也就是说,不需要具有值.但是,一般情况下,不鼓励您这样做 - 特别是对于数值(通常,您可以使用具有默认值的强制属性 - 在0的模型中获得更好的结果).原因是SQL对NULL有特殊的比较行为,与Objective-C的nil不同.数据库中的NULL与0不同,搜索0将不匹配NULL的列.

我总是使数值非可选,但没有日期和字符串.我的代码很方便基于日期和/或字符串为零的逻辑.

基于以上建议,我正在考虑使我的数据库中的所有内容都是非可选的.对于日期,我可以将模型默认值设置为0,对于字符串,模型默认值为nothing("").然后,在我的代码中,我可以测试[date timeIntervalSince1970]!= 0的日期和string.length!= 0的字符串.

问题是,对于一个相对较小的数据库,从核心数据性能的角度来看,这真的很重要吗?如果有问题的属性永远不会通过谓词直接查询,那么权衡是什么?

optimization core-data

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

CoreData轻量级迁移:CoreData可以自动迁移到哪个"模型的简单更改"?

我想尽可能多地使用CoreData轻量级迁移,但是在文档中找不到,具体情况就是这种情况.文档说: 如果您只是对模型进行简单更改(例如向实体添加新属性),则在Mac OS X v10.6及更高版本和iPhone OS上,Core Data可以执行自动数据迁移.

要使Core Data能够执行此操作,更改必须符合明显的迁移模式,例如:
- 简单添加新属性
- 非可选属性变为可选
- 可选属性变为非可选属性,并定义默认值值

好吧,我尝试了添加一个没有关系的新实体并删除一个现有的实体(没有关系),并且自动也适用于我.

问题是:是否有人知道可以自动迁移的简单更改究竟是什么?

migration core-data

7
推荐指数
1
解决办法
1619
查看次数

在运行单元测试时阻止应用程序创建viewcontroller

当我使用OCUnit测试我的应用程序时,它会像往常一样设置AppDelegate,window和rootViewController,然后再运行测试.然后我的rootViewController将自己添加为某些NSNotifications的观察者.

当我使用独立的测试实例和模拟观察者测试这些通知时,也会调用自动创建的rootViewController的通知处理程序,这会导致我的一些测试失败.

有没有办法让OCUnit在测试模式下运行时不创建rootViewController或使其使用不同的ViewController类?如果可以在我的应用程序代码中不编写与测试相关的特殊代码的情况下完成,那将会很酷.

tdd unit-testing ocunit uiviewcontroller ios

7
推荐指数
1
解决办法
1654
查看次数

NSLocalizedString - 使用未声明的标识符问题

我正在使用NSLocalizedString一个特定的消息,如果第二个参数作为一个变量传递,它可以正常工作,但如果第二个参数的写入与设置的变量完全相同Use of undeclared identifier 'NSLocalizedString',Too many arguments provided to function-like macro invocation则会失败.我有使用变量的工作代码,这很好,我只是想了解在其他情况下无法知道如何避免它的原因.

使用以下声明:

NSString *branchTitle = [branchDictionary objectForKey:@"Title"];
NSString *localString = [NSMutableString stringWithFormat:@"%@ node title", branchTitle];
Run Code Online (Sandbox Code Playgroud)

这没关系,工作正常:

[navItem setTitle:NSLocalizedString(branchTitle, localString)];
Run Code Online (Sandbox Code Playgroud)

...但是,这似乎与我相同,但由于上述错误而失败:

[navItem setTitle:NSLocalizedString(branchTitle, [NSMutableString stringWithFormat:@"%@ node title", branchTitle])];
Run Code Online (Sandbox Code Playgroud)

在这里和其他地方搜索我没有找到解释.我阅读了每个错误消息和各种NSLocalizedString问题的一些点击,但没有任何将它们联系在一起的内容.我发现的第二条错误消息暗示可能是clang的问题和语句中的逗号数量,表明即使额外的逗号在NSMutableString消息中,它仍被视为额外的参数NSLocalizedString.这有任何意义吗?

这个问题并不重要,但该声明旨在根据从字典中提取的英文版本设置导航栏标题的本地化版本,该字典因不同视图而异.该NSMutableString部分根据英文标题定义了本地化的注释.

编辑:根据下面接受的答案解决此问题后,我注意到另一个相关问题.该声明localString正在产生"Unused variable"编译器警告,但显然正在使用它.这也是因为它在C-macro中并且为了完整性,我在这里添加一个关于抑制该警告的相关帖子的链接:如何在Xcode中摆脱"未使用的变量"警告

cocoa-touch objective-c nslocalizedstring

7
推荐指数
1
解决办法
3142
查看次数

在Core Data for iOS中建模一对多关系

我有两个实体:患者和检查站.患者具有诸如DOB,姓名,ID等属性.检查点具有诸如dateRecorded,身高,体重等属性.

您可能会得到这样的想法 - 我希望有一组患者,然后每个患者都可以拥有与该患者相关的检查点.

在两个实体上,我应该如何设置设置?设置是: 关系窗口

我查看了这个文档,我仍然感到困惑.我认为我想要的是一对多关系(对于病人),但是我不知道如何为它们中的任何一个设置反转,或删除规则和其他东西.谢谢!!

entity-relationship core-data one-to-many ios

6
推荐指数
1
解决办法
1155
查看次数