小编Tro*_*sen的帖子

使用私有Google存储的Firebase iOS SDK身份验证

我正在我的应用程序(macOS app)中使用适用于iOS/macOS的Firebase SDK进行测试.我使用以下方法安装了SDK:

pod 'FirebaseCore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :tag => '4.8.2'
pod 'FirebaseAuth', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :tag => '4.8.2'
pod 'FirebaseStorage', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :tag => '4.8.2' 
Run Code Online (Sandbox Code Playgroud)

安装工作正常,我可以使用AppDelegate配置我的应用程序 [FIRApp configure];

我想知道我是否可以使用SDK将用户登录到他/她的私有Google云端存储(GCS)?我知道我可以使用SDK在应用程序存储中存储到GCS,但是登录用户自己的GCS以检索存储桶和文件列表会很不错.如果有人有如何做到这一点的例子我会很感激.我找到的所有示例都是匿名存储登录.

更新: 我可以指定我希望Firebase SDK包含允许我访问自己的Google云存储帐户的身份验证方法.也许Firebase不是这个的正确选择,但是我会对Swift/objective-c登录/上传/下载到Google云存储的替代SDK的建议非常感兴趣.

google-cloud-storage firebase swift firebase-authentication firebase-storage

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

在多边形内轮廓不规则数据

我需要在多边形内创建海面温度(SST)数据的填充等高线图,但我不确定最好的方法.我有三个包含X,Y和SST数据的1D数组,我使用以下内容绘制以创建附图:

p=PatchCollection(mypatches,color='none', alpha=1.0,edgecolor="purple",linewidth=2.0)
levels=np.arange(SST.min(),SST.max(),0.2)
datamap=mymap.scatter(x,y,c=SST, s=55, vmin=-2,vmax=3,alpha=1.0)
Run Code Online (Sandbox Code Playgroud)

我希望能够绘制这些数据作为填充轮廓(contourf而不是散射)被约束(剪切)多边形边界内(紫线).非常感谢有关如何实现这一目标的建议.

在此输入图像描述

更新: 我最初尝试过griddata,但无法使其正常工作.但是,根据@eatHam提供的答案,我决定再试一次.当我选择方法'立方'时,我无法让我的scipy griddata工作,因为它一直悬挂在网格上,但是当我切换到matplotlib.mlab.griddata并使用'线性'插值时它起作用.掩盖边界的建议提供了一个非常粗略而不是我想要的精确解决方案. 使用蒙面剪辑显示解决方案的图像

我搜索了如何在matplotlib中剪辑轮廓的选项,我在这个链接上找到了@pelson的答案.我尝试了暗示的建议解决方案:"轮廓集本身没有set_clip_path方法,但您可以迭代每个轮廓集合并设置它们各自的剪辑路径".我的新的最终解决方案看起来像这样(见下图):

  p=PatchCollection(mypatches,color='none', alpha=1.0,edgecolor="purple",linewidth=2.0)
  levels=np.arange(SST.min(),SST.max(),0.2)
  grid_x, grid_y = np.mgrid[x.min()-0.5*(x.min()):x.max()+0.5*(x.max()):200j,
                          y.min()-0.5*(y.min()):y.max()+0.5*(y.max()):200j]
  grid_z = griddata(x,y,SST,grid_x,grid_y)

  cs=mymap.contourf(grid_x, grid_y, grid_z)

  for poly in mypatches:
      for artist in ax.get_children():
          artist.set_clip_path(poly)

      ax.add_patch(poly)
  mymap.drawcountries()
  mymap.drawcoastlines()
  mymap.fillcontinents(color='lightgrey',lake_color='none')
  mymap.drawmapboundary(fill_color='none')
Run Code Online (Sandbox Code Playgroud)

在推断北方的极端边缘方面,这种解决方案也可以特别改进.关于如何真正"填充"完整多边形的建议值得赞赏.我也想了解为什么mlab工作和scipy没有.

使用set_clip_path显示剪裁轮廓的最终解决方案

python matplotlib matplotlib-basemap

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

在Parse和localDataStore之间同步

使用'enableLocalDataStore'时,我无法将本地数据与Parse数据同步.如果我不使用本地存储一切都很好,但我想尽量减少对Parse服务器的调用.据我所知,如果我对新创建的对象使用'saveaveEventually',它们将在本地持续(固定)并在互联网连接可用时与Parse同步.这也很好.我的问题是我不知道使用Parse'dataStore'更新本地'dataStore'的最佳方法,除了调用一个远程获取更改并在本地更新的方法.目前,使用以下内容:

-(void) fetchAllFavorites{
  PFQuery *query = [PFQuery queryWithClassName:@"UserStats"];
  [query fromLocalDatastore];

  [[query findObjectsInBackground] continueWithBlock:^id(BFTask *task) {
      if (task.error) {
      }
      else
      {
           [PFObject pinAll:task.result];  
      }
      return task.result;
  }];
} 
Run Code Online (Sandbox Code Playgroud)

此方法不考虑Parse'dataStore'中可能发生的更改.我可以通过直接调用方法来取消固定所有本地对象并获取Parse中的任何内容.但是,我认为有一种更好的方法可以将局部变化与Parse"dataStore"中的变化无缝地同步?难道这不是允许首先使用'localDataStore'的想法吗?目前,我只能看到这种方式有一种方式:您在本地存储数据,然后手动更新Parse'dataStore',但您并不真正在这些之间同步.至少这是我从一些例子中得到的想法我想知道是否有人有一个很好的方法如何:如何启用与Parse'dataStore'持续同步的'localDataStore'?任何建议和例子都会非常有帮助.我在Cocoa编程,但Java示例也很棒.谢谢,T.

cocoa ios parse-platform pfquery

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

重置Core Data驱动的treeController内容

我运行我的程序,创建使用NSTreeControllerNSOutlineView中显示的Core Data内容.第二次运行程序时,我想清理我的内容,然后运行下面粘贴的方法.该方法要么在完成之前挂起很长时间(600秒),要么崩溃.如果我的实体(500-1000)很少,那么与我有很多(200,000)个实体传递此方法所需的时间相比,如果它完全通过则需要更少的时间.我需要知道的是,在重新运行程序并重新填写之前,是否有更好的方法来清除/刷新/重置我的内容以清除我的内容.具体来说,我希望我能够快速响应我的内容更改,并且我需要驱动我的核心数据内容才能重置.NSTreeControllerNStreeControllerNStreeControllerNSoutlineViewNStreeControllerNSOutlineViewNSTreeControllerNSTreeController

-(void) cleanSDRDFileObjects
{
    __weak __typeof__(self) weakSelf = self;
    dispatch_async(dispatch_get_main_queue(), ^{     
        [weakSelf.outlineView collapseItem:nil collapseChildren:YES];
        [weakSelf.coreDataController._coreDataHelper.context  performBlockAndWait:^{

            NSEntityDescription *entityDescription = [NSEntityDescription
                                                  entityForName:@"SDRDFileObject"                                        inManagedObjectContext:weakSelf.coreDataController._coreDataHelper.context];

            NSFetchRequest *request = [[NSFetchRequest alloc] init];
            [request setEntity:entityDescription];

            NSArray * result = [weakSelf.coreDataController._coreDataHelper.context  executeFetchRequest:request error:nil];
            for (id fileobject in result){
                [weakSelf.coreDataController._coreDataHelper.context deleteObject:fileobject];
            }
            [weakSelf.coreDataController._coreDataHelper.context processPendingChanges];

            NSLog(@"Finished deleting all objects");
        }];
    });
 }
Run Code Online (Sandbox Code Playgroud)

managedobjectcontext(context)作为类型运行,NSMainQueueConcurrencyType方法在主线程上运行.重点建议或重置/刷新NSOutlineView +核心数据组合的有用示例将不胜感激.谢谢.干杯,特隆德

为了回应@TomHarringtons的问题,我拍了一张Time Profiler的照片.我真的不想t understand why it hangs …

macos cocoa core-data objective-c nsoutlineview

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

从边界点创建闭合多边形

我有一组定义区域边界的经纬度点。我想根据这些点创建一个多边形并在地图上绘制多边形并填充它。目前,我的多边形似乎由许多连接所有点的补丁组成,但点的顺序不正确,当我尝试填充多边形时,我得到了一个奇怪的区域(见附件)。黑点表示边界点的位置

我根据多边形的中心对我的经纬度点(mypolyXY 数组)进行排序,但我的猜测是这不正确:

cent=(np.sum([p[0] for p in mypolyXY])/len(mypolyXY),np.sum([p[1] for p in mypolyXY])/len(mypolyXY))
# sort by polar angle
mypolyXY.sort(key=lambda p: math.atan2(p[1]-cent[1],p[0]-cent[0]))
Run Code Online (Sandbox Code Playgroud)

我使用

scatter([p[0] for p in mypolyXY],[p[1] for p in mypolyXY],2)
p = Polygon(mypolyXY,facecolor=colors,edgecolor='none')
ax.add_artist(p)
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何根据经纬度点数组关闭多边形?

更新: 我对如何绘制多边形进行了更多测试。我删除了排序例程,只是按照它们在文件中出现的顺序使用数据。这似乎改善了结果,但正如@tcaswell 所提到的,多边形形状仍然自我削弱(参见新图)。我希望可能有一个路径/多边形例程可以解决我的问题,并在多边形边界内合并所有形状或路径。非常欢迎提出建议。

在此处输入图片说明

更新 2:

我现在有一个基于@Rutger Kassies 和 Roland Smith 建议的脚本的工作版本。我最终使用 org 阅读了 Shapefile,它的效果相对较好。它适用于标准的 lmes_64.shp 文件,但是当我使用更详细的 LME 文件时,其中每个 LME 可以由多个多边形组成,这个脚本就会崩溃。我必须找到一种方法来合并具有相同 LME 名称的各种多边形以使其工作。我附上了我最终得到的脚本,以防有人看它。我非常感谢有关如何改进此脚本或使其更通用的评论。该脚本创建多边形并在我从 netcdf 文件中读取的多边形区域内提取数据。输入文件的网格为 -180 到 180 和 -90 到 90。

import numpy as np
import math
from pylab import *
import matplotlib.patches as patches …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

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

NSView或CALayer的子视图?

今天我决定尝试使用CALayers来显示覆盖NSView的矩形框.该图层将包含一些文本,并将根据何时需要显示变量文本来打开和关闭.我想使用CALayer的原因是你可以轻松地使用CALayer进行渲染和动画.我实现了我的图层,它就像一个魅力.但是,在使用我的GUI并在各种按钮上单击几次打开和关闭图层之后,我认为我的图层视图的层次结构似乎是倾斜的.我认为焦点必须切换到其他一些已被关闭的NSView.我基本上对于在给定时间处理哪个层并且失去了对视图层次结构的控制感到非常困惑.

我的问题是:我应该使用NSView或CALayers的子视图来显示可能在应用程序中多次打开和关闭的内容吗?在我看来,很容易失去对你正在处理的层的控制.有没有办法通过名称识别当前图层,以便您可以重复使用图层,或者最好是使用图层,删除它们,然后在下次需要时重新创建图层?

谢谢你的时间.干杯,特隆德

cocoa objective-c calayer nsview

3
推荐指数
1
解决办法
2060
查看次数

如何使用objective-c在Amazon S3上创建文件夹

我知道这是一个之前可能会被问过的问题(至少在Python中),但我仍然在努力做到这一点.我将本地文件夹结构和内容与我在Amazon S3存储桶中存储的内容进行比较.在S3上存在但在本地找不到的目录将在我的S3存储桶中创建.似乎Amazon S3没有文件夹概念,而是将文件夹标识为大小为0的空文件.我的问题是,如何通过放置一个空文件轻松地在objective-c中创建一个文件夹(在S3上命名对应于文件夹名称)(我使用ASIHTTP来获取和放置事件)?我想通过将新文件复制到非现有文件夹来显式创建目录而不是隐式创建目录.感谢您对此的帮助.

cocoa objective-c amazon-s3 asihttprequest

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

使用委托,操作和队列

我正在使用AWS SDK for iOS从本地硬盘驱动器上传和下载文件到Amazon S3存储.我能够完成这项工作,但我无法让S3代表在操作完成或导致错误时正确响应以提醒我.

我有一系列要上传的文件.对于每个文件创建一个NSOperationmain例行包含较多:

    AmazonCredentials * credentials = [[AmazonCredentials alloc] initWithAccessKey:ACCESS_KEY_ID withSecretKey:SECRET_KEY];
    putObjectRequest = [[S3PutObjectRequest alloc] initWithKey:pathCopy inBucket:[self bucket]];
    putObjectRequest.filename = pathSource;
    putObjectRequest.credentials=credentials;
    [putObjectRequest setDelegate:s3Delegate];
Run Code Online (Sandbox Code Playgroud)

这里,delegate(s3Delegate)被创建为常规的AmazonServiceRequestDelegate,它应该能够在操作完成时触发响应.我的每一个NSOperations都被添加到我的NSOperationQueue非同时执行操作.如果我使用委托,[putObjectRequest setDelegate:s3Delegate]则操作无效.如果我删除了委托的使用,则操作正确执行但我无法接收任何操作响应,因为我没有委托.

如果我NSOperationQueue完全删除了使用,并使用[putObjectRequest setDelegate:s3Delegate]委托完美.

我的问题是在队列中使用委托我做错了什么?由于委托完全能够执行而不在队列中,这可能与不在主线程上执行有关吗?我真的希望能够使用队列来限制非并发操作的数量,但我无法弄清楚这一点.我希望有人知道这里发生了什么,任何示例代码将不胜感激.谢谢!干杯,特隆德

cocoa objective-c amazon-s3 amazon-web-services

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

截断一个字符串

我有一个NSTableView,它在一列中显示文件的路径.当用户调整tableview的大小时,我希望调整路径名(例如/Users/name/testfile.m)的大小,但我希望路径名的末尾(例如... name/testfile.m)可见,而不是默认情况下启动(例如/ Users/test/te ...)路径.我写了一个成功完成我想做的功能,但是当用户缩放tableview时,tableview会在重绘时闪烁.我认为必须有一个更好,更优雅的算法,但我已经查看了NSString和Stackoverflow的文档,我找不到任何可以提供更好解决方案的东西.如果有人对这个问题有一个更优雅的解决方案,将不胜感激.谢谢!干杯,特隆德

我目前的职能:

-(NSString *) truncateString:(NSString *) myString withFontSize:(int) myFontSize withMaxWidth:(NSInteger) maxWidth
{
    // Get the width of the current string for a given font
    NSFont *font = [NSFont systemFontOfSize:myFontSize];
    CGSize textSize = NSSizeToCGSize([myString sizeWithAttributes:[NSDictionary     dictionaryWithObject:font forKey: NSFontAttributeName]]);
    NSInteger lenURL =(int)textSize.width;

    // Prepare for new truncated string
    NSString *myStringShort;
    NSMutableString *truncatedString = [[myString mutableCopy] autorelease];

    // If the available width is smaller than the string, start truncating from first character
    if (lenURL > maxWidth)
    {
        // …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c nstableview

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

如何定位NSPopover

我有一个 OSX 应用程序,它使用 NSViewController 在我的 NSView 中交换输入输出视图。其中一种视图是 NSOutlineView。我现在想要在用户双击大纲视图中的一行时出现 NSPopover。目前我使用以下方法来显示弹出窗口:

NSRect theRect = [[NSApp keyWindow] convertRectFromScreen: NSMakeRect(700, 400, 5, 5)];
[myPopover showRelativeToRect: theRect // Window Coordinates
                        ofView: [[NSApp keyWindow] contentView]
                 preferredEdge: NSMinYEdge];
Run Code Online (Sandbox Code Playgroud)

这使得 NSPopover 出现在应用程序的底部。这有效,但我希望能够让弹出框正好出现在 NSOutlineView 的点击行下方。我交换进出的每个视图都由 NSViewController 控制,我想我可以使用 NSViewController 的 view 属性识别我的视图位置。但是,如果我替换[[NSApp keyWindow] contentView]myViewController.view我收到错误,即视图没有窗口并且 NSPopover 崩溃。显然,我遇到了麻烦 1) 在 NSView 中找到相对于主窗口的点击行的坐标 2) 理解为什么我的视图没有窗口。如果有人有可以帮助我理解这些问题的建议,我将不胜感激。

2013 年 6 月 2 日更新我仍在努力解决我的问题,但我发现如果我通过 MainWindowController (myControlledView) 访问其属性,我可以获得正确的视图坐标。然后当我询问视图的原点和框架大小时,我得到了正确的值。我的 VC 将自定义视图加载为 NIB 文件,当我询问加载视图的来源时,我得到 (0,0)。我认为即使我将视图作为 NIB 加载,视图相对于窗口的位置也会保持不变?我可以将视图原点传递给我的 VC,从而正确设置 NSPopover 但这看起来相当麻烦,我认为可以通过 VC 正确访问 NIB …

cocoa nsoutlineview nsview nsviewcontroller nspopover

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

以编程方式检测已安装卷的连接类型

我在本地和挂载的文件系统之间复制文件,其中挂载的系统可以是USB,FireWire,AFP或远程服务器.我需要确定已安装卷正在使用的计算机的连接类型.我可以使用statfs系统调用来识别挂载的文件系统类型,但我无法弄清楚如何识别连接类型(FireWire,Wifi,eth,USB ......).我识别文件系统的代码是:

-(void) getVolumeInfo:(NSURL *) myurl
{
    struct statfs buf;
    statfs([myurl.path UTF8String], &buf);
    NSLog(@"Filesystem type: %s mounted filesystem: %s mounted as:  %s",buf.f_fstypename,buf.f_mntfromname,buf.f_mntonname);
}
Run Code Online (Sandbox Code Playgroud)

这为我的笔记本电脑硬盘和我的NAS服务器提供了以下输出.

Filesystem type: hfs mounted filesystem: /dev/disk0s2 mounted as: /
Filesystem type: afpfs mounted filesystem: //Trond%20Kristiansen@HerlighetNASserver._afpovertcp._tcp.local/home mounted as: /Volumes/home
Run Code Online (Sandbox Code Playgroud)

我的问题是:1)有没有人知道如何通过代码识别例如NAS服务器是如何连接的(wifi或网络电缆)2)无论如何我能检测到连接速度吗?

谢谢!

cocoa objective-c

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

可可代码中的内存泄漏

我试图分析为什么Xcode分析器(v4.2)抱怨我的Objective-c代码泄漏内存.我正在创建一个NSOperation,1)递归创建一个目录(如果它不存在),2)将文件从一个目录复制到另一个目录.

NSOperation初始化为:

- (id)initWithFullPathSource:(NSString *) mysource andFullPathCopy:(NSString *) mycopy     andNewDirectory:(NSString *) mydir withMode:(NSString *) mymode withLR:(NSString *) LR
{

     self = [super init];
     if (self) {

        [self setFullPathSource:mysource];
        [self setFullPathCopy:mycopy];
        [self setNewDirectory:mydir];
        [self setMode:mymode];
        [self setMyLR:LR];
    }

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

附件是Xcode分析器如何看到我的代码的屏幕截图.谁能帮助我理解为什么我在这种情况下泄漏记忆?我在主程序结束时发布'createComponents'和'removeComponents',所以我觉得我很清楚.

希望有人可以解决我的问题.谢谢!干杯,特隆德

在此输入图像描述

xcode cocoa objective-c

0
推荐指数
1
解决办法
157
查看次数