小编Jor*_*416的帖子

如何在iOS 8中正确呈现popover

我正在尝试将UIPopoverView添加到我的Swift iOS 8应用程序,但我无法访问PopoverContentSize属性,因为popover没有显示正确的形状.我的代码:

var popover: UIPopoverController? = nil 

    func addCategory() {

    var newCategory = storyboard.instantiateViewControllerWithIdentifier("NewCategory") as UIViewController
    var nav = UINavigationController(rootViewController: newCategory)
    popover = UIPopoverController(contentViewController: nav)
    popover!.setPopoverContentSize(CGSizeMake(550, 600), animated: true)
    popover!.delegate = self
    popover!.presentPopoverFromBarButtonItem(self.navigationItem.rightBarButtonItem, permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true)
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

当我通过UIPopoverPresentationController做同样的事情时,我仍然没有完成它.这是我的代码:

func addCategory() {

    var popoverContent = self.storyboard.instantiateViewControllerWithIdentifier("NewCategory") as UIViewController
    var nav = UINavigationController(rootViewController: popoverContent)
    nav.modalPresentationStyle = UIModalPresentationStyle.Popover
    var popover = nav.popoverPresentationController as UIPopoverPresentationController
    popover.delegate = self
    popover.popoverContentSize = CGSizeMake(1000, 300)
    popover.sourceView = self.view
    popover.sourceRect = CGRectMake(100,100,0,0)

    self.presentViewController(nav, animated: true, …
Run Code Online (Sandbox Code Playgroud)

uipopovercontroller ios uipopover swift ios8

115
推荐指数
6
解决办法
17万
查看次数

UIDocumentInteractionController"invalid scheme(null)"

我正在尝试使用UIDocumentInteractionController预览文档.该文档是我的应用程序从网上下载的.xls文件.我一直收到这个错误:

'UIDocumentInteractionController: invalid scheme (null).  Only the file scheme is supported.'
Run Code Online (Sandbox Code Playgroud)

我用下一个代码:

- (void) webServiceController:(WebServiceController *)webServiceController returnedArray:(NSMutableArray *)array {
    if ([webServiceController.webRequest isEqualToString: @"generateExcelFileForEmployee"]) {
        // start previewing the document at the current section index
        NSString *link = [[NSString stringWithString:array[0]] stringByReplacingOccurrencesOfString:@"AdminFunctions.php" withString:@"AdminFunctions.xls"];
        link = [[[link stringByReplacingOccurrencesOfString:@"\\" withString:@""]stringByReplacingOccurrencesOfString:@"/public/sites/" withString:@"http://"]stringByReplacingOccurrencesOfString:@"\"\\\"" withString:@""];
        NSLog(@"%@", link);
        NSData *urlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:link]];

        NSArray   *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString  *documentsDirectory = [paths objectAtIndex:0];

        NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"AdminFunctions.xls"];

        BOOL isWriteSuccess = [urlData writeToFile:filePath atomically:YES];
        NSLog(@"%@", …
Run Code Online (Sandbox Code Playgroud)

excel preview nsdata ios uidocumentinteraction

22
推荐指数
1
解决办法
7865
查看次数

如何使文字响应div大小?

我正在建立一个电子商务网站.所有产品都以不同的div显示.我有一个问题:在每个产品的Div中,我想显示产品描述的一部分.当产品描述比div长时,它只是在div的边缘显示描述.我试图将问题放在一张图片中: 在此输入图像描述

现在,正如您在图片中看到的,我想解决三个问题:

  • 我想限制文本以适应div.
  • 我想确保这不是在一个单词中间的某个地方完成的
  • 我想在说明预览的末尾添加"阅读更多"链接.

现在我在其他电子商务网站上看到了很多,但在找了几个小时后,我还没有找到关于如何做到这一点的清晰描述.

这是生成所有产品卡的代码:

for($i = 0; $i<$numberOfItems; $i++) {
    //echo $output_array[$i]["itemName"];
    echo '<a href="/itemDetails.php?itemCode=';echo $output_array[$i]["itemCode"]; echo '&itemName='; echo $output_array[$i]["itemName"];echo'">
    <div id="item" style="background-color: transparent; width:243px;height:auto;float:left; margin-left:20px; margin-top:20px; max-width:800px; display:inline-block;">
    <div id="itemPicture" class="itemImage"; > 
    <div id="price" class="pricetag">
    <div id="priceText" class="priceText";>';
    echo "€".$output_array[$i]["itemPrice"];

    echo '</div></div>';
    $imageSource = "http://www.imagine-app.nl/ProductImages/".$output_array[$i]["firstImage"].".jpg";
    echo '<img src="';echo $imageSource; echo'" style="max-width:100%; border:0px;"> 

    </div>

    <div id="itemName" class="itemName"">';
        echo $output_array[$i]["itemName"];
    echo '</div>'; ?>

    <div id="itemDescription" class="itemDescription" style="height:">
    <?  echo $output_array[$i]["itemDescription"];
    echo '</div>';
    ?>

    <?php
    echo '<div id="itemComment" class="itemComment""> …
Run Code Online (Sandbox Code Playgroud)

html javascript css responsive

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

如何保护移动应用的API(私钥)

我正在构建一个必须只能用于iOS应用程序的Web服务.在未来,我想扩展到移动网站,使我的服务也可用于其他移动操作系统.

现在,我通过API完成所有工作.我的用户可以注册,搜索公司,从这些公司订购产品并跟踪他们的订单.它尚未活跃,但它正在运作..

我面临一个主要问题:如何确保这一点?

在过去的几天里,我已停止编码,我一直忙于搜索网络,StackOverflow和信息安全,以了解如何执行此操作.我发现亚马逊获取API的方式对我来说是最好的解决方案.亚马逊确保其服务的方式在这里解释.我已经为我的服务稍微调整了一下:

  1. 用户注册并获取私有API密钥+公共(标识)密钥
  2. 用户输入凭据并点击"登录".应用程序从变量+私钥创建哈希.App将变量+时间戳+哈希+公钥发送给API
  3. API查找数据库中的公钥,查找属于该公钥的私钥(如果公钥有效).然后API以与应用程序相同的方式创建哈希.如果哈希值相同,则执行请求(在这种情况下登录).

这种保护服务的方式对我来说很有意义,我可以编写大部分代码.但我有一个主要问题,我找不到任何解决方案:

  • 用户在创建帐户时获取公钥和私钥API密钥.公钥可以从服务器发送到用户设备,因为这不一定是秘密.由于私有API密钥永远不能通过网络发送,我怎么能确保登录用户设备的帐户知道在服务器上创建的私有API密钥?

有谁知道如何解决这个问题?任何帮助将非常感谢!!

security api web-services key ios

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

删除的CloudKit记录重新出现

我正在使用CloudKit构建iOS应用程序.

它应该允许用户Products在云中添加,编辑和删除.用户可以在文件夹中组织这些内容.这些文件夹只是cloudkit中的其他记录类型.用户可以使用的文件夹级别没有限制,因为任何文件夹都可以只保存CKReference到其父文件夹.我的应用程序中的所有CloudKit通信都在专用的CloudKitController类中进行

这一切都有效,但一段时间后停止工作没有明确的理由.

当我测试我的应用程序时,我甚至不会使用多级别的文件夹.但是,使用它一段时间(最多一周)后,所有已删除的记录似乎都会重新出现在CloudKit上.关于这个的几点说明:

  • 当我重置我的CloudKit仪表板并重新开始时,它完美无缺.没有进行代码更改.
  • 显然,我正在不断编辑我的代码,因为应用正在开发中.但是,我通常不会编辑我的代码中要存储在CloudKit中的数据类型.当我这样做时,这个问题不会在之后出现
  • CloudKit仪表板中的更改(例如,添加数据类型)不会导致此问题
  • 我没有在本地存储任何记录,例如在核心数据中.只要我使用它们,它们就会坐在一个单体中
  • 当我转到CloudKit仪表板时,产品记录类型显示它有例如13个实例.有时它太糟糕了,我的应用程序实际上加载了100以上.当我转到recordZone时我也可以看到它们,但仍然RecordType说它只有13个实例
  • 在CloudKit仪表板中删除这些记录只会让它们消失一段时间.当我重新加载页面时,它们会再次弹出.

它已经有一段时间了,我已经检查过我的代码,Apple Library和Google多次,但我无法弄清楚导致这个问题的原因.

问题: 有人知道如何克服这个问题吗?就像我说的那样,我已经遇到了几个星期,重置我的CloudKit仪表板只能"治愈"它长达一个星期,然后它再次弹出.我也非常乐意发布任何代码,如果这有助于你回答我的问题.我最初没有发布任何代码,因为我不知道代码可能会导致什么.

任何答案都将受到高度赞赏

ios swift cloudkit

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

React-Native SectionList滚动到Android上看不见的项目

对于我正在从事的项目,我需要创建一个组件,用户可以在其中向处于状态的数组添加条目,并SectionList显示这些条目。另外,输入后,我需要SectionList向下滚动到最新条目。请查看此小吃作为示例

列表本身会显示所有条目并在添加新条目后进行更新,但是一旦列表包含的内容超出了屏幕显示的范围,它只能向下滚动到倒数第二个,我确实需要滚动到最后一个。

我尝试了许多事情,包括等待setState,定义contentContainerStyle,将整个事情转换为VirtualizedListand ScrollView,这是我能想到的,但是我根本无法让它滚动到最后一个条目。

问题:如何使我的SectionList滚动到当前超出SectionList组件范围的最后一项?

UPDATE 我知道此问题是由于SectionList调用scrollToLocation时尚未包含该项目引起的。解决方案的关键似乎是等待列表的重新呈现

UPDATE 2 SetState的回调也无法解决此问题。但是,注释中的解决方案有效。它的问题在于它仅适用于.js文件,而我在整个项目中都使用.tsx文件。我该如何克服呢?

react-native react-native-sectionlist

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

CloudKit:基于CKQueryNotification删除本地对象

我正在构建一个严重依赖CloudKit进行数据同步的应用程序.每次应用程序启动时,它都会捕获使用a在服务器上进行的所有更改CKFetchNotificationChangesOperation.这会成功返回已创建和/或修改的所有对象,但我现在处于这个阶段,我还希望我的应用程序根据这些消息删除记录.

在我的应用程序中,我存储在CoreData中的每个对象也携带该对象的在线表示的recordID.这样我就可以轻松获取需要修改的对象.

删除对象时这似乎很难,因为CloudKit只返回这些对象的recordID,并且不提供我可以用来知道我在CoreData数据库中查找的对象的recordType.

在具有多种记录类型的情况下,如何正确处理CloudKit"已删除"通知?

core-data ios icloud swift cloudkit

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

使用通用函数从云记录(或其他外部源)填充对象

我正在为我的Swift应用程序构建通用API.我CoreData用于本地存储和CloudKit云同步.

为了能够在泛型函数中使用我的数据对象,我将它们组织如下(简要摘要):

  • 进入CoreData数据库的对象是NSManagedObject符合所调用协议的实例ManagedObjectProtocol,可以转换为DataObject实例
  • NSManagedObject需要进行云同步的s符合一个CloudObject允许从记录中填充对象的协议,反之亦然
  • 我在我的应用程序的图形层中使用的对象是NSObject类,它们符合DataObject允许转换为NSManagedObject实例的协议

特定类的对象.我希望这段代码看起来像这样:

for record in records {
    let context = self.persistentContainer.newBackgroundContext()
    //classForEntityName is a function in a custom extension that returns an NSManagedObject for the entityName provided. 
    //I assume here that recordType == entityName
    if let managed = self.persistentContainer.classForEntityName(record!.recordType) {
        if let cloud = managed as? CloudObject {   
            cloud.populateManagedObject(from: record!, in: context)
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

但是,这给了我几个错误:

Protocol …
Run Code Online (Sandbox Code Playgroud)

generics protocols core-data swift swift-protocols

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

我是否需要获得iOS中Fabric Crashlytics等服务的许可?

我开发了一个具有很好的下载数据的应用程序,但是当我在iTunes Connect上查看App Statistics时,我可以看到它确实崩溃了几次.我想通过使用像Fabric Crashlytics这样的服务来解决这个问题.

我想知道的是,我找不到很多信息,是否需要请求我的用户这样做?在一天结束时,该服务会将数据从其设备发送到服务器.我可以在后台执行此操作,还是需要获得许可?

debugging ios crashlytics twitter-fabric

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

iOS:CKFetchNotificationChangesOperation结果不完整

我正在构建一个非常依赖CloudKit作为数据源的iOS应用程序.

安装应用程序并首次运行后,我需要下载大量驻留在CloudKit Container公共数据库中的数据.我这样做了CKFetchNotificationChangesOperation

每次启动应用程序时,此操作都会运行,以检查自上次收到的服务器更改令牌以来的数据更改.显然,在第一次启动应用程序时,我必须提供的更改令牌为nil,这将导致CKFetchNotificationChangesOperation加载数据库上发生的所有更改.

然后返回的数据将存储在本地,因为我希望拥有与我的用户相关的所有数据的本地缓存.我将这些数据存储在核心数据库中.由于第一次启动时应用程序需要的数据集可能很大,我真的需要CKFetchNotificationChangesOperation来获取服务器上的所有更改.

然而,这似乎不可靠.使用我在数据库中输入的一些数据测试此服务时,我没有收到我应该收到的所有数据.当我在公共数据库中输入更多数据时,CKFetchNotificationChangesOperation似乎完全忽略了我之前输入的记录.有时候,有些人会漏掉但是非常不可靠.

显然,我已经验证我的订阅是合法的(之前加载了相同的记录),并且我检查了moreComing参数是否CKFetchNotificationChangesOperation为真(总是如此false)

在初始加载时,如何在公共数据库中获取所有数据?我认为CKFetchNotificationChangesOperation应该做的工作,但似乎不可靠.是否有类似"范围"的东西我可以在此操作上配置以强制它加载我的所有数据?或者CKFetchNotificationChangesOperation不适合初始加载,我应该通过自定义操作加载我需要的所有数据吗?

notifications subscriptions ios icloud cloudkit

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