我一直在研究一种方法,用于在多个设备(如iPad或Mac)之间同步存储在iPhone应用程序中的核心数据.在iOS上使用Core Data的同步框架并不多(如果有的话).但是,我一直在考虑以下概念:
我需要考虑什么花哨的东西吗?我查看了REST框架,例如ObjectiveResource,Core Resource和RestfulCoreData.当然,这些都与Ruby on Rails一起使用,我并不依赖它,但它是一个开始的地方.我对我的解决方案的主要要求是:
我考虑过一些挑战:
还有什么我在这里失踪的吗?我应该考虑哪些框架才能实现这一目标?
我可以使用以下代码轻松地在Core Data中获取对象的ID:
NSManagedObjectID *moID = [managedObject objectID];
Run Code Online (Sandbox Code Playgroud)
但是,是否有办法通过为对象提供特定的对象ID来将对象从核心数据存储中取出?我知道我可以通过使用NSFetchRequest来实现这一点,如下所示:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(objectID = %@)", myObjectID];
[fetchRequest setPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
但是,我想以不启动自己的获取请求的方式执行此操作.有任何想法吗?
我的iPhone应用程序需要迁移其核心数据存储,而且一些数据库非常庞大.Apple的文档建议使用"多次传递"来迁移数据以减少内存使用.但是,文档非常有限,并没有很好地解释如何实际执行此操作.有人可以指出我一个好的例子,或者详细解释如何实际解决这个问题的过程吗?
我一直在寻找一种先进的levenshtein距离算法,到目前为止我发现的最好的是O(n*m),其中n和m是两个弦的长度.算法处于这种规模的原因是因为空间而不是时间,创建了两个字符串的矩阵,例如:

是否有一个公开的levenshtein算法,它比O(n*m)更好?我并不反对看高级计算机科学论文和研究,但却找不到任何东西.我找到了一家名为Exorbyte的公司,该公司据称已经建立了超级先进且超快的Levenshtein算法,但当然这是商业秘密.我正在构建一个iPhone应用程序,我想使用Levenshtein距离计算.有一个Objective-c实现可用,但由于iPod和iPhone上的内存有限,我想找到一个更好的算法,如果可能的话.
我有一个NSFetchRequest返回对象的属性NSDictionaryResultType.是否有可能在这个字典中获取对象的ObjectId?否则,我将需要运行返回类型的查询,NSManagedObjectResultType对于大量返回的项目,返回类型要慢得多.
在我当前的应用程序中,我有显示消息的代码,例如"5个已处理的项目".为了保持短语在语法上正确,即它是否应该是"5 Item"或"5 Items",我使用以下代码:
int numItems = 5;
NSString *myString = [[NSString alloc] initWithFormat:@"%d Item%@ Processed", numItems, (numItems == 1 ? @"" : @"s")];
Run Code Online (Sandbox Code Playgroud)
这个现在工作正常.但我正在本地化我的应用程序,并希望确保我正在翻译应用程序的所有语言中的文本语法正确.我可以这样做:
int numItems = 5;
NSString *myString = (numItems == 1 ?
NSLocalizedStringWithTable(@"%d Item Processed", @"myApp", @"singular version") :
NSLocalizedStringWithTable(@"%d Items Processed", @"myApp", @"plural version"));
Run Code Online (Sandbox Code Playgroud)
但是,并非所有语言都具有相同的复数操作规则!例如,(原谅我在这里非常具体的例子)俄语中,用最后一个数字1结尾的数字修改的名词(即21,31,但不是 11)采用主格,结束于2-4的数字采用了genitive奇异,5+采取属性复数的情况.这将需要更严格的逻辑来处理如何以语法正确的方式复数特定名词,并且该逻辑与英语逻辑不匹配.因此,从理论上讲,我不能在Objective-C代码中使用语法逻辑,而应该在strings文件中使用语法逻辑.有没有办法做到这一点?人们如何为他们的应用翻译动态文本,以使其在语法上保持正确?
iphone localization internationalization localizable.strings ios
我有BugSense的崩溃报告,因此我有关于崩溃的内存位置的信息,但它们没有象征性.此外,Bug Sense不会发送传统的崩溃报告,但仍会给我一个bug跟踪.因此,我尝试使用Atos来获取崩溃的确切位置.我已经在XCode 4中存档了应用程序并使用该版本提交到应用程序商店,因此我有一个dSYM文件.我运行了以下代码:
atos -arch armv7 -o MyApp.app.dSYM 0x001057e9
Run Code Online (Sandbox Code Playgroud)
但是,我没有得到正确的输出,而是收到错误:
atos cannot load symbols for the file MyApp.app.dSYM for architecture armv7
Run Code Online (Sandbox Code Playgroud)
有关为什么会发生这种情况的任何建议?我没有从应用程序中删除调试符号.
如何使UISegmentedControl中的一个按钮中的文本跨越多行?
可能重复:
iphone如何从客户那里获取崩溃日志?
我的一些用户报告崩溃.向他们解释如何向我发送崩溃报告的最佳方式是什么,以便它们显示在崩溃报告的iTunes Connect列表中?当用户将手机与电脑同步时,它们会被发送吗?谢谢!
我正在iOS 7上实施Apple的"Grand统一收据",允许该应用程序在本地检查应用程序的购买收据,而无需联系Apple的服务器进行验证和验证.如果用户在应用程序中存储了收据,则此方法很有用.如果应用程序缺少收据,最佳做法是请求应用程序刷新收据,如下:
SKReceiptRefreshRequest *request = [[SKReceiptRefreshRequest alloc] init];
[request setDelegate:self];
[request start];
Run Code Online (Sandbox Code Playgroud)
问题是调用此代码将要求用户使用他或她的Apple ID登录.如果这种情况一直发生,或者只有当用户的应用程序商店登录超时时,我并不是100%确定.除非确实有必要,否则我不想向用户显示Apple ID登录屏幕 - 我不希望人们担心他们会被错误地收费.我想显示一个显示屏,告诉用户为什么会要求他们提供Apple ID密码,但前提是他们确实需要输入密码.如果他们不需要输入密码,我希望它是一个无缝且隐藏的过程.什么是最好的方法?我认为最好的方法是检查用户是否需要登录应用程序商店,但我不确定这是否可行.