小编Sid*_*tre的帖子

使用异步componentDidMount()好吗?

使用componentDidMount()作为一个异步函数的良好做法作出反应本地还是应该避免呢?

我需要从AsyncStorage组件安装时获取一些信息,但我知道实现这一点的唯一方法是使componentDidMount()函数异步.

async componentDidMount() {
    let auth = await this.getAuth();
    if (auth) 
        this.checkAuth(auth);
}
Run Code Online (Sandbox Code Playgroud)

这有什么问题,还有其他解决方案吗?

asynchronous reactjs react-native

101
推荐指数
4
解决办法
5万
查看次数

React Native JSON.stringify无法序列化循环结构

我们正在构建一个RN应用程序(RN0.37),我们遇到了一个问题,当应用程序运行时,我们得到一个" TypeError: JSON.stringify cannot serialize cyclic structures".

API响应中没有任何相关性发生变化,最近问题消失了,但是在擦除/重建时(由不相关的问题触发)重新出现.

我怀疑是使用了几个包:" react-native-router-flux"和" react-native-permissions",但我无法在应用程序中找到任何相关内容.

目前我对"react-native-router-flux"的怀疑主要基于这篇文章:https://github.com/aksonov/react-native-router-flux/issues/363

我对"反应本机权限"的怀疑主要是基于这样一个事实,即在这个项目中包含这个包的时机是可疑的,并且似乎与这个错误的表现相吻合 - 尽管我无法证明绝对肯定.

我唯一的另一个线索是,JSON.stringify错误似乎总是在一个警告列表之前.他们都读到"这个合成事件是出于性能原因重复使用的.如果你看到这个,你就是在一个已发布/无效的合成事件上访问该属性.这被设置为null.如果你必须保留原始合成事件,使用event.persist()https://facebook.github.io/react/docs/events.html#event-pooling以获取更多信息." 列表如下(始终按相同顺序):nativeEvent,type,target,currentTarget,eventPhase,bubbles,cancelable,timeStamp,defaultPrevented,isTrusted和touchHistory.

以下是我的package.json:

"dependencies": {
  "blueimp-md5": "2.5.0",
  "moment": "2.16.0",
  "phone-formatter": "0.0.2",
  "react": "15.3.2",
  "react-native": "0.37.0",
  "react-native-asset-library-to-base64": "1.0.1",
  "react-native-aws3": "0.0.3",
  "react-native-button": "1.7.1",
  "react-native-cached-image": "1.2.2",
  "react-native-camera-kit": "4.0.1",
  "react-native-camera-roll-picker": "1.1.9",
  "react-native-contacts": "0.5.2",
  "react-native-fbsdk": "0.4.0",
  "react-native-fetch-blob": "0.10.0",
  "react-native-fs": "2.0.1-rc.2",
  "react-native-geocoder": "0.4.5",
  "react-native-image-crop-picker": "0.10.5",
  "react-native-image-resizer": "0.0.12",
  "react-native-nav": "1.1.4",
  "react-native-permissions": "0.2.5",
  "react-native-photo-view": "1.2.0",
  "react-native-router-flux": "3.37.0",
  "react-native-stripe": "1.2.1",
  "react-native-swipe-list-view": "0.3.1",
  "react-redux": "4.4.6", …
Run Code Online (Sandbox Code Playgroud)

json cyclic ios react-native react-native-router-flux

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

如何以编程方式点击ios谷歌地图标记或显示标记的信息窗口?

我正在使用带有多个标记的Google Maps iOS SDK,它会在标记点按上显示标记信息窗口.下面的代码适用于地图视图中显示的多个标记和标记.它还会在标记点击时显示标记信息窗口,并在点击时更改标记图标.

-(UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)imarker
{
    UIView *infowindow = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 90, 45)];
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 90, 45)];
    [label setFont:[UIFont fontWithName:@"TrebuchetMS-Bold" size:22]];
    infowindow.layer.cornerRadius = 5;
    infowindow.layer.borderWidth = 2;
    label.textAlignment = NSTextAlignmentCenter;
    label.text = @"Test";
    label.textColor=[UIColor greenColor];
    infowindow.backgroundColor=[UIColor whiteColor];
    [infowindow addSubview:label];
    return infowindow;    
} 
Run Code Online (Sandbox Code Playgroud)

现在我想以编程方式触发标记或在标记上显示信息窗口.

marker = [GMSMarker markerWithPosition:position];
marker.title = @"Name";
marker.snippet = @"Test";        
[self mapView:_mapView didTapMarker:marker];
[_mapView setSelectedMarker:marker];
Run Code Online (Sandbox Code Playgroud)

以上代码不适合我.它只是移动到标记的位置不显示信息窗口.有没有办法以编程方式点击标记并显示信息窗口?

google-maps objective-c ios gmsmapview

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

如何在iOS中编辑和保存存储在本地目录中的Microsoft Word文档?

我正在使用 Dropbox 和 Microsoft word。我可以从 Dropbox 下载文件并存储在本地存储中(在 Document 目录中)。现在我想编辑word文档。我尝试了几种方法,但对我不起作用。

下载到本地存储并使用 Microsoft Word 打开,UIDocumentInteractionController但其打开时只读复制并保存在 Microsoft Word 应用程序中:

let file = URL(fileURLWithPath: dirPath).appendingPathComponent("/\(filename)")
// Do whatever you want with the document
self.docController = UIDocumentInteractionController(url: file)
self.docController.delegate = self
self.docController.presentOpenInMenu(from: self.view.frame, in: self.view, animated: true)
Run Code Online (Sandbox Code Playgroud)

在本地存储中下载并使用 Microsoft Word 应用程序的 URL 方案使用 Microsoft Word 打开,但失败并显示错误无法打开文件:

let url : NSString = "ms-word:ofe|u|\(directoryContents[0])|z|yes|a|App" as NSString
let urlStr : NSString = url.addingPercentEscapes(using: String.Encoding.utf8.rawValue)! as NSString
let searchURL : NSURL = NSURL(string: urlStr as String)!
UIApplication.shared.openURL(searchURL …
Run Code Online (Sandbox Code Playgroud)

dropbox ios swift swift3

6
推荐指数
0
解决办法
1150
查看次数

从Swift上的kCBAdvDataManufacturerData中提取数据

我有一个TI传感器Tag作为外设,以kCBAdvDataManufacturerData的形式广播BLE数据.我想从iOS中的这些数据中提取不同的值.

我在Swift中执行以下操作:

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber){     
     for (index, foundPeripheral) in peripherals.enumerated(){
         if foundPeripheral.peripheral?.identifier == peripheral.identifier{
             peripherals[index].lastRSSI = RSSI
             print("AdvertisementData:\(advertisementData)")
             return

         }
     }  

     let isConnectable = advertisementData["kCBAdvDataIsConnectable"] as! Bool
     let displayPeripheral = DisplayPeripheral(peripheral: peripheral, lastRSSI: RSSI, isConnectable: isConnectable)
     peripherals.append(displayPeripheral)
     tableView.reloadData()
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我在控制台中看到的:

AdvertisementData:["kCBAdvDataIsConnectable":0,"kCBAdvDataManufacturerData":<0d00fe05 0c6f32>,"kCBAdvDataLocalName":CLIMBC]

我有兴趣解码的数据是kCBAdvDataManufacturerData:<0d00fe05 0c6f32>并在屏幕上显示每个字段.具体来说,这就是数字代表我的情况:

  1. 0d00 - TI制造商ID
  2. fe - 我给出的节点ID
  3. 05 - 节点的状态(保持不变的状态)
  4. c6f - 是传感器标签电池电压
  5. 32-是BLE包计数器.

在Android中,我可以解码如下:

private static String getNodeIdFromRawPacket(byte[] manufSpecField) {
    if(manufSpecField != null && …
Run Code Online (Sandbox Code Playgroud)

iphone ios core-bluetooth bluetooth-lowenergy swift3

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

如何在浏览器项目中向用户显示谷歌搜索引擎结果

我正在用 swift 为 iPhone、iPad 实现一个浏览器UIWebView。一切正常,但问题是,当用户输入错误或不完整的他们喜欢的网站的 URL 时,它似乎崩溃了并且不呈现任何内容。因此,如果浏览器无法找到所请求的页面,我想以某种方式执行此操作,然后它会自动在谷歌搜索引擎上搜索该确切单词并在浏览器中显示结果。如果需要的话,这是我这部分的代码。感谢任何帮助

 func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    //let urlString:String = urlTextField.text!
    var urlString: String = urlTextField.text!

    if !urlString.starts(with: "http://") && !urlString.starts(with: "https://") {
        urlString = "http://\(urlString)"
    }

    let url:URL = URL(string: urlString)!
    let urlRequest:URLRequest = URLRequest(url: url)
    webView.load(urlRequest)

    textField.resignFirstResponder()

    let path: String = url.path
    let ext: String = URL(fileURLWithPath: path ).pathExtension
    print(ext as Any)

    return true

} 
Run Code Online (Sandbox Code Playgroud)

uiwebview swift

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

Mac OS应用程序中用户所选文件夹的读写权限?

我正在开发MAC OS应用程序,它具有代表您创建文件的功能.第一个用户选择用于存储文件的文件夹(在应用程序启动时一次),然后用户可以使用苹果脚本选择要在所选文件夹上创建的文件的类型和名称(在应用程序启动时选择的文件夹).我可以创建文件,当我temporary-exception在权利文件中添加以下但它无法应用苹果审核团队但在沙盒中工作.

准则2.4.5(i) - 绩效我们已确定为此应用程序请求的一个或多个临时权利例外不合适且不会被授予:

com.apple.security.temporary-exception.files.home-relative-path.read-write
/FolderName/
Run Code Online (Sandbox Code Playgroud)

我发现 :

启用App Sandbox - 允许应用编写可执行文件.

启用用户选择的文件访问 - Xcode在目标编辑器的"摘要"选项卡中提供了一个弹出菜单,其中包含对用户明确选择的文件和文件夹进行只读或读/写访问的选项.当您启用用户选择的文件访问权限时,您可以以编程方式访问用户使用NSOpenPanel对象打开的文件和文件夹,以及用户使用对象保存的文件NSSavePanel.

使用以下代码创建文件:

let str = "Super long string here"
let filename = getDocumentsDirectory().appendingPathComponent("/xyz/output.txt")

do {
    try str.write(to: filename, atomically: true, encoding: String.Encoding.utf8)
} catch {
    // failed to write file – bad permissions, bad filename, missing permissions, or more likely it can't be converted to the encoding
}
Run Code Online (Sandbox Code Playgroud)

还尝试com.apple.security.files.user-selected.read-write在NSOpenPanel对象中添加授权文件:

<key>com.apple.security.files.user-selected.read-write</key>
<true/>
Run Code Online (Sandbox Code Playgroud)

有没有办法通过苹果审查小组批准Mac App对用户选择的文件夹具有读写权限?

macos cocoa swift

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

Branch.io URL测试没有在App Store上部署App?

我想测试新添加addMetadataKey的分支共享链接 [branchUniversalObject addMetadataKey:@"user_name" value:user_name ];是否存在params.

如果用户点击链接,如果他没有安装应用程序,他将被重定向到应用程序商店但应用程序商店已部署版本dabove代码然后我如何测试新代码?

我想查看Xcode刺激器共享addMetadataKey参数.我需要addMetadataKey一些功能参数.有没有办法在不部署应用程序的情况下进行测试?

我怎样才能做到这一点?

// Branch.IO
Branch *branch = [Branch getInstance];
[branch initSessionWithLaunchOptions:launchOptions isReferrable:YES andRegisterDeepLinkHandler:^(NSDictionary *params, NSError *error) {
    NSLog(@"Branch io params  ....    %@ ",params);
    NSString *shareUserName = [params objectForKey:@"user_name"];
    NSLog(@"%@",shareUserName);
    if (!error) {

}}];
Run Code Online (Sandbox Code Playgroud)

objective-c ios branch.io

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

需要在UICollectionView中显示视频和图像

需要在UICollectionView中显示视频和图像.

如何在UICollectionView中显示视频和图像的数量.我正在使用JSON从服务器下载资产.

以下是服务器下载图像的代码:

NSDictionary *dictImage = [arrImages objectAtIndex:indexPath.item]; 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[dictImage objectForKey:@“imgURL"]]]; 
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {        
    [cell.imgGallery setImage:[UIImage imageWithData:imgData]];    
}];
Run Code Online (Sandbox Code Playgroud)

 

以下是此屏幕的示例链接.

像Whatsapp

iphone xcode objective-c ios swift

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