小编wes*_*der的帖子

在iOS应用中添加"Open In ..."选项

在iOS设备上,Mail应用程序为附件提供"Open In ..."选项.列出的应用程序已在操作系统中注册了CFBundleDocumentTypes.我想知道的是我的应用程序如何允许用户在其他应用程序中打开我的应用程序生成的文件.Mail是唯一提供此功能的应用程序吗?

iphone ipad ios

44
推荐指数
3
解决办法
8万
查看次数

-observeValueForKeyPath:ofObject:change:context:收到消息但未处理

我对KVO比较陌生,所以我很有可能违反了一些基本规则.我正在使用核心数据.

我的应用程序崩溃了以下消息:我无法理解的是为什么CGImage参与观察在MeasurementPointer对象上设置的值.

        *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<CGImage 0x276fc0>: An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.
Key path: measurementDescriptor
Observed object: <MeasurementPointer: 0x8201640> (entity: MeasurementPointer; id: 0x8200410 <x-coredata://EBEE0687-D67D-4B03-8C95-F4C60CFDC20F/MeasurementPointer/p75> ; data: {
    measurementDescriptor = "0x260fd0 <x-coredata://EBEE0687-D67D-4B03-8C95-F4C60CFDC20F/MeasurementDescriptor/p22>";
})
Change: {
    kind = 1;
    new = "<MeasurementDescriptor: 0x262530> (entity: MeasurementDescriptor; id: 0x260fd0 <x-coredata://EBEE0687-D67D-4B03-8C95-F4C60CFDC20F/MeasurementDescriptor/p22> ; data: {\n    measurementName = Temperature;\n    measurementUnits = \"\\U00b0C\";\n    sortString = nil;\n})";
}
Context: 0x0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x30897ed3 …
Run Code Online (Sandbox Code Playgroud)

iphone key-value-observing nsexception

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

多版本升级的核心数据迁移

我有一个使用Core Data的iPhone应用程序.

我做了一个更新并使用轻量级迁移从我的MOM(管理对象模型)的V1到V2.这非常有效.

当我想要去我妈妈的V3(及以上)时会发生什么?

  • 如果我决定继续轻量级迁移,它会自动处理从我的MOM的V1到V3和V2迁移到V3,还是需要做一些额外的事情?
  • 如果我决定使用映射模型,会发生什么?如何处理将V1和V2 MOM升级到V3的问题?我是否需要为V1到V3和V2到V3创建映射模型?
  • 这个问题更进一步......当我拥有V6 MOM并且仍然需要支持从V1 MOM升级的可能性时会发生什么?

另一个问题是确定当前MOM版本的最佳方法是什么?我应该使用isConfiguration:compatibleWithStoreMetadata:

谢谢你的帮助.我很喜欢核心数据.但它有时让我头晕目眩,我感到困惑,这就是我寻求一些圣人智慧的原因.

migration iphone cocoa core-data mapping-model

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

通过迁移将核心数据索引添加到某些属性

出于性能原因,我想将索引属性设置为我的一些实体.我创建了一个新的核心数据模型版本来执行更改.核心数据检测到更改并将我的模型迁移到新版本,但是,没有生成索引.

如果我从头开始重新创建数据库,那么索引就在那里.我在iPhone和模拟器上检查了SQLite浏览器.只有先前格式的数据库已存在,才会出现此问题.

有没有办法手动添加索引?为此写一些sql?或者我错过了什么?我已经做了一些更重要的迁移,没有问题.但那些缺失的索引让我烦恼.

谢谢你的帮助!

migration iphone indexing core-data mapping-model

25
推荐指数
1
解决办法
7364
查看次数

Android模拟器拒绝启动

我是一个Android新手试图学习如何将我的一个应用程序移植到Android平台.我一直在关注这个教程:

http://www.vogella.de/articles/Android/article.html#overview

我无法启动模拟器:(当我告诉它开始时,它会坚持几个小时的"Android"启动动画.我在网上搜索并发现一些页面谈论禁用启动动画.我这样做并再次尝试.没有启动动画(只是"Android"闪烁一词),但它仍然没有启动的迹象.'top'显示了一个使用大量CPU的应用程序名为'emulator'.

难道我做错了什么?我的系统是AMD Athlon X2双核QL-60,1900 MHz,3GB内存.

谢谢你尽你所能的帮助.

eclipse android android-emulator boot-animation

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

在iPad上访问UIActionSheet的UIPopoverController

在iPad上,可以使用-showFromBarButtonItem:animated:来显示UIActionSheet.这很方便,因为它将UIPopoverController包装在操作表周围,并将弹出框的箭头指向传入的UIBarButtonItem.

但是,此调用将UIBarButtomItem的工具栏添加到直通视图列表中 - 这并不总是可取的.并且,如果没有指向UIPopoverController的指针,则无法将其他视图添加到直通列表中.

有没有人知道获得指向弹出控制器的指针的制裁方法?

提前致谢.

uiactionsheet ipad uipopovercontroller

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

在使用iOS的块中进行多次传递核心数据迁移

我正在尝试迁移大约11Mb的iPhone/iPad sqlite商店.它有大约30个不同的实体,都非常相互关联.

在3GS上,需要相当长的时间.即使轻量级迁移也需要大约四分钟.

我想这是因为所有关系都保存在内存中.

阅读Apple迁移指南,它说对于大型数据集,一种方法是使用不同的映射模型进行多次传递.

一切都很好.但是,如果一个映射模型中的实体与另一个映射模型中的实体相关,则似乎无法执行此操作.实际上,编译错误是在Mapping Model xcmappingmodel文件中的"无法使用nil映射名称自动生成值表达式"的行中生成的.

任何提示非常感谢.

非常感谢,

马克斯

iphone core-data core-data-migration ios mapping-model

13
推荐指数
1
解决办法
1976
查看次数

在NSManagedObjectContext -save中调试SIGABRT:

从NSManagedObjectContext内部 - 保存:我收到此消息:

断言失败:(_ Unwind_SjLj_Resume()无法返回),函数_Unwind_SjLj_Resume,文件/SourceCache/libunwind/libunwind-24.1/src/Unwind-sjlj.c,第326行.

程序收到信号:"SIGABRT".

警告:无法读取/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1(8C148)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib(未找到文件)的符号.

当我使用Run删除带有to-many的Experiment对象时,会发生这种情况,其中包含Sample,其中包含与Data一起使用的Sample.实验也有许多与页面有很多与显示,其中有许多运行.我提到这一点是为了指出图的周期性.这是一个简化的模型图:

替代文字

实验用户与之交互的顶级实体.实验包含多个Run对象.运行是从特定时间开始并在稍后结束的数据集合.由于可以同时从多个源收集数据,因此每个Run的每个源都有一个Sample.实验包含数据,需要查看和交互此数据.因此,每个实验都有一些页面对象,每个页面包含一些显示(例如,图形,米).显示器配置为显示属于实验的运行的某个子集.因此,虽然实验可能包含数十个运行,但其中一个页面一次只会显示一些运行.Display实体维护此列表.显示不是视图.视图将引用Display对象并通知Display对象的更改.

我一直在使用删除规则,但现在已经切换到"无操作"删除规则以及所有这些类的-prepareForDeletion方法.这种变化没有任何区别.在这两种情况下,错误消息都是相同的.

有趣的是,当我重新启动应用程序时,所有标记为删除的对象都已被删除.

此外,如果实验没有运行对象,则删除工作没有发生.就此而言,从实验中删除单个Run也可以.

我希望有人见过这样的东西,可以提供有关导致这种情况的建议.或者,如果某人有关于如何获取iOS 4.2.1的libXcodeDebuggerSupport.dylib的建议,那么这可能也会有所帮助.

更新:我按照这里的建议,并能够让Xcode找到适用于iOS 4.2.1的libXcodeDebuggerSupport.dylib.但这对诊断问题毫无帮助 - 这种问题依然存在.

更新2:在阅读了一下并下载unwind-sjlj.c的版本之后,似乎我正在处理类似未捕获的异常.我不确定这对我有什么帮助......

更新3:感谢堪察加,我做了几天前我应该做的事情:打开"停止Objective-C Exceptions".这让我看到仍然保留了对已删除对象的引用 - 更糟糕的是,键值观察了已删除的对象.解决了这个固定的问题,我能够恢复使用删除规则而不是-prepareForDeletion方法.

iphone core-data nsmanagedobject nsmanagedobjectcontext

13
推荐指数
1
解决办法
5048
查看次数

iOS:当手机旋转时,导航栏的titleView无法正确调整大小

我正在编写一个iPhone应用程序(与大多数应用程序一样)支持自动旋转:您可以旋转手机,其视图可以旋转并适当调整大小.

但我正在为navigationItem.titleView(导航栏的标题区域)分配一个自定义视图,当手机旋转时,我无法正确调整视图大小.

我知道你在想什么,"只要设置了autoresizingMaskUIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight,"但它不是那么简单.当然,如果我没有设置我的视图autoresizingMask,那么我的视图不会调整大小; 我希望它能够调整大小.

问题是,如果我做的设置它autoresizingMask,然后它会调整,只要正确的这一观点是可见的; 但titleView在这种情况下,它的大小搞砸了:

  1. 将手机保持在纵向模式下运行应用程序.一切都很好看.
  2. 做一些导致应用程序将另一个视图推送到导航堆栈的东西.例如,单击导致呼叫的表格行或按钮[self.navigationController pushViewController:someOtherViewController animated:YES].
  3. 在查看子控制器时,将手机旋转到横向.
  4. 单击"返回"按钮返回顶级视图.此时,标题视图混乱:尽管您正在横向模式下握住手机,但标题视图的大小仍然像在纵向模式下一样.
  5. 最后,将手机旋转回纵向模式.现在,事情变得更糟:标题视图的尺寸缩小(因为导航栏变得越来越小),但因为它已经是太小了,现在是多少太小.

如果您想自己重现,请按照以下步骤操作(这有点工作):

  1. 使用Xcode的"基于导航的应用程序"向导制作应用程序.
  2. 设置它以使顶级表视图具有行,当您单击它们时,将详细视图推送到导航堆栈.
  3. 在顶级视图控制器和详细视图控制器中包含此代码:

    - (BOOL)shouldAutorotateToInterfaceOrientation:
            (UIInterfaceOrientation)interfaceOrientation {
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 仅在顶级视图控制器中包含此代码:

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        // Create "Back" button
        UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Master"
            style:UIBarButtonItemStylePlain target:nil action:nil];
        self.navigationItem.backBarButtonItem = backButton;
        [backButton release];
    
        // Create title view
        UILabel* titleView = [[[UILabel alloc] initWithFrame:CGRectMake(0,0,500,38)] …
    Run Code Online (Sandbox Code Playgroud)

iphone uinavigationbar ios

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

核心数据迁移失败,"无法找到源存储的模型",但存在源的managedObjectModel

我有一个使用核心数据的cocoa应用程序,它现在是其托管对象模型的第4版.

我的托管对象模型包含抽象实体,但到目前为止,我已设法通过创建适当的映射模型并使用addPersistentStoreWithType创建我的持久存储来实现迁移:配置:options:error并将NSMigratePersistentStoresAutomaticallyOption设置为YES.

NSDictionary *optionsDictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
NSURL *url = [NSURL fileURLWithPath: [applicationSupportFolder stringByAppendingPathComponent: @"MyApp.xml"]];
NSError *error=nil;
[theCoordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:url options:optionsDictionary error:&error]
Run Code Online (Sandbox Code Playgroud)

当我从模型版本3迁移到4时,这种方法很有效,这是一个涉及向多个实体添加属性的迁移.现在,当我尝试添加新的模型版本(版本5)时,对addPersistentStoreWithType的调用返回nil,错误仍为空.从4迁移到5涉及添加单个属性.

我正在努力调试问题,并检查了以下所有内容;

  1. 源数据库实际上是版本4,而persistentStoreCoordinator的托管对象模型是版本5.

  2. 4-> 5映射模型以及版本4和5的托管对象模型存在于我构建的应用程序的resources文件夹中.

  3. 我尝试了各种模型升级路径.奇怪的是,我发现从早期版本3 - > 5升级工作..但从4 - > 5升级失败.

  4. 我已经尝试添加自定义实体迁移策略,用于迁移属性正在发生变化的实体...在这种情况下,我覆盖了方法beginEntityMapping:manager:error :. 有趣的是,当迁移工作时(即当我从3迁移到4或从3迁移到5)时,会调用此方法,但在失败的情况下(4到5)不会调用它.

关于在哪里继续,我几乎不知所措.任何有助于调试此问题的想法都将非常感激.

cocoa core-data core-data-migration mapping-model

12
推荐指数
1
解决办法
6507
查看次数