小编iOS*_*Fun的帖子

iOS:无法将文件保存到"应用程序支持"文件夹,但可以"文档"

我可以将二进制文件下载并保存到'Documents'文件夹中,并且自定义名称完全正常.

如果我只是将URL更改为"应用程序支持"文件夹而不是"文档"文件夹,则无法写入该URL,表明它不存在.

这是URL构造代码:

- ( NSURL * ) getSaveFolder
{
    NSURL * appSupportDir    = nil;
    NSURL * appDirectory     = nil;
    NSArray * possibleURLs   = [[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSAllDomainsMask];

    if ( [possibleURLs count] >= 1 )
    {
        appSupportDir = [possibleURLs objectAtIndex:0];
    }

    if ( appSupportDir != nil)
    {
        NSString * appBundleID = [[NSBundle mainBundle] bundleIdentifier];
        appDirectory           = [appSupportDir URLByAppendingPathComponent:appBundleID];
    }

    return appSupportDir;
}
Run Code Online (Sandbox Code Playgroud)

这是保存代码:

- ( void ) writeOutDataToFile:( NSData * )data
{

    NSURL * finalURL = [self.rootPathURL URLByAppendingPathComponent:self.aFileName];

    [data writeToURL:finalURL …
Run Code Online (Sandbox Code Playgroud)

directory file save ios

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

可折叠部分:[Assert] 无法确定 preReloadFirstVisibleRow (0) 的新全局行索引

我正在 UITableViewController 中实现可折叠的部分标题。

以下是我确定每个部分显示多少行的方法:

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    return self.sections[section].isCollapsed ? 0 : self.sections[section].items.count
}
Run Code Online (Sandbox Code Playgroud)

有一个结构体保存了带有“isCollapsed”布尔值的部分信息。

这是我如何切换他们的状态:

private func getSectionsNeedReload(_ section: Int) -> [Int]
{
    var sectionsToReload: [Int] = [section]

    let toggleSelectedSection = !sections[section].isCollapsed

    // Toggle collapse
    self.sections[section].isCollapsed = toggleSelectedSection

    if self.previouslyOpenSection != -1 && section != self.previouslyOpenSection
    {
        self.sections[self.previouslyOpenSection].isCollapsed = !self.sections[self.previouslyOpenSection].isCollapsed
        sectionsToReload.append(self.previouslyOpenSection)
        self.previouslyOpenSection = section
    }
    else if section == self.previouslyOpenSection
    {
        self.previouslyOpenSection = -1
    }
    else
    {
        self.previouslyOpenSection = section
    } …
Run Code Online (Sandbox Code Playgroud)

assert collapsable ios swift uitableviewsectionheader

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

如何防止核心数据在iOS 5中重复?

我遇到了一个问题.

在周末,我一直在研究一个项目,我正在从Web服务中提取大型xml.

它基本上有3层 - 客户,经理,员工都是等级的.因此,第一次运行应用程序时,它会提取此xml并对其进行解析,并在3个相关实体 - 客户端,经理和员工中创建所有条目.

每次应用程序启动时,我都需要将相同的XML拉下来,但这一次,我只需要"更新"任何已更改的现有记录,或者为自上次出现以来出现的新客户,经理或员工添加新记录时间.

所以 - 就在我说的那一刻,它正在全力以赴,正确解析并创建正确的实体并填充所有属性.

但是,如果没有数据更改,在第二次启动时它会重复所有数据 - 所以不是15个客户端(正确的数字)我有30个等等......

我是否真的必须在我的解析中添加大量代码来检查而不是创建一个新的NSManagedObject,我检查它是否已经存在?

如果是 - 我必须手动检查每个属性?

那是非常痛苦和长篇大论 - 是不是有办法让Core Data为我做这种事 - 自动?

感谢您的任何帮助或建议.

web-services core-data duplicates ios

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

在运行时获取供应配置文件的EXPIRATION日期?

我有一个应用程序,我经常通过ad-hoc分发方法传递给测试人员.其中一些测试人员"关注",并且对配置文件和季度到期有足够的了解,并且可以(如果我忘记)给我一个重建新版本供他们测试的推动.

然而,一些用户似乎总是达到停止运行的程度然后婊子和呻吟 - 尽管他们可能会忽略iOS级别的提醒.

我的问题是,我可以在运行时以编程方式获取到期日期并执行我自己的"应用程序内"警报或系统通知,以提醒他们下载新版本吗?

notifications runtime provisioning profiles ios

8
推荐指数
2
解决办法
3118
查看次数

ios13 UIPopoverViewController 显示 UITableViewController - 安全区域问题/表格的缺失部分

在与这篇文章相同的主题中:

iOS 13 - UIPopoverPresentationController sourceview 内容在箭头中可见

我有一个从故事板实例化的 UITableViewController。我在 UIPopoverViewController 中展示它。

根据方向,我要么缺少一侧,要么缺少顶部,_UITableViewHeaderFooterViewBackground 的内容“通过”箭头滚动。

怎么了:

这些是当它在顶部时,但如果它出现在侧面,那么整个侧面

在此处输入图片说明 在此处输入图片说明

在此处输入图片说明

编辑:我正在使用安全区域指南:

在此处输入图片说明

正如我之前所说,我从对象库中拖出一个全新的 UITVC,然后将原型单元更改为我的应用程序的要求。

我对任何安全区域切换或设置进行了零更改。

我不会更改代码中的任何安全区域插入或调整。

所以,谢谢@Alex,但这不是问题,或者如果是,我不知道该怎么办。

编辑2:

今天下午,我确保我的班级中的代码为零,可以执行任何格式、颜色、插入或任何与更改默认表格单元格的任何形式有关的工作。

然后我在 IB 中完全删除了我的 UITVC 并创建了一个新的,创建新的原型单元,除了在单元中放置一个 UIImageView 之外没有样式。

我确保 UITVC、tableviewcell 和内容视图都在 IB 中勾选了“安全区域”和“安全边距”。

重建应用程序并运行。

完全相同的。

我仍然有内容和背景越过箭头,如果我然后在表格周围添加边框,则呈现侧被“切断”。

编辑 3:

我知道问题是什么!!!

这是 _UITableViewHeaderFooterViewBackground 不能很好地与 AutoLayout 配合使用!!

我不确定如何解决它,但这就是问题所在。

在此处输入图片说明

编辑 4 / 更新:

今天我构建了以下应用程序,即使没有节标题,该错误仍然存​​在!

  1. 在 IB 中,创建一个带有两个按钮的 UIVC,一个左上角,另一个右上角。

  2. 从资产目录中拖出一个 UITVC 并将其放在原始 VC 的一侧,然后从资产库中拖出一个 UIVC 并将其放在另一侧。

  3. 将 UITableView 从资产库拖到“新” UIViewController 上,只需将其顶部和底部设置为引导安全区域布局,将左右设置为安全边距,0 常量(您可以保留默认值 20 - 没有区别)。

  4. 现在,将这些按钮连接到原始 UIVC,以便按下每个按钮会实例化一个或其他两个控制器,并在弹出窗口中显示它们。

请注意,在任何 UIViewController 上都没有格式化、没有样式、没有更改任何默认的 IB 设置。

这是“中心” …

uitableview uipopovercontroller swift safearealayoutguide ios13

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

使用UIImages的CAKeyframeAnimation不起作用

我正在设置动画:

self.testAnimation = [CAKeyframeAnimation animationWithKeyPath:@"TestAnimation"];

[self.animationImagesAsCGImages addObject:( id )[UIImage imageNamed:@"c1.png"].CGImage];
[self.animationImagesAsCGImages addObject:( id )[UIImage imageNamed:@"c2.png"].CGImage];
[self.animationImagesAsCGImages addObject:( id )[UIImage imageNamed:@"c3.png"].CGImage];
[self.animationImagesAsCGImages addObject:( id )[UIImage imageNamed:@"c4.png"].CGImage];

[self.animationKeyframeTimings addObject:[NSNumber numberWithFloat:0.0f]];
[self.animationKeyframeTimings addObject:[NSNumber numberWithFloat:0.25f]];
[self.animationKeyframeTimings addObject:[NSNumber numberWithFloat:0.5f]];
[self.animationKeyframeTimings addObject:[NSNumber numberWithFloat:0.75f]];

self.testAnimation.values          = self.animationImagesAsCGImages;
self.testAnimation.keyTimes        = self.animationKeyframeTimings;

self.testAnimation.repeatCount     = HUGE_VALF;
self.testAnimation.autoreverses    = NO;
self.testAnimation.calculationMode = kCAAnimationDiscrete;
self.testAnimation.duration        = 2.0f;
Run Code Online (Sandbox Code Playgroud)

然后将其称为:

[self.layer addAnimation:self.testAnimation forKey:@"TestAnimation"];
Run Code Online (Sandbox Code Playgroud)

但没有任何东西在显示

我已经看过几个关于kCAAnimationDiscrete的其他Stack帖子需要第一个时间为0.0f,正如你所看到的那样.

请指教?

core-animation cakeyframeanimation ios

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

故事板的多个入口点

我需要在发布时在AppDelegate中做出一系列决策 - 取决于我需要转到故事板特定部分的决策结果.

所以我的问题是 - 没有使用任何导航或标签控制器,我如何去故事板的特定部分?

要么

是唯一支持多个故事板的选项 - 对于每个'结果',然后根据需要加载它们?

谢谢

iphone point storyboard ios

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