小编Jos*_*ell的帖子

是否仍然可以在 iOS 和 tvOS 之间共享 UserDefaults?

是否仍然可以在 iOS 和 tvOS 之间共享 UserDefaults?

在我的 Xcode 项目中,我用于UserDefaults在 iOS 目标和 tvOS 目标之间共享数据。UserDefaults当我尝试从我的 tvOS 应用程序取回数据时,我总是收到来自我的 nil 值。

这些是我共享数据所采取的步骤:

1:为两个目标添加应用程序组。两个目标使用相同的应用程序组 ID: group.nl.mycompany.myappname

我使用 .nl 域,但这应该没问题,因为这也适用于我的其他项目。

2:确认两个目标具有相同的部署目标。我尝试使用 10.0 和 11.0。

3:验证 myproject.entitlements 是否一切正常。

4:验证在 developer.apple.com 上为我的包标识符启用了应用程序组。

5:两个目标具有相同的包 ID。我还尝试使用 2 个不同的包标识符。

6:我UserDefaults从我的 iOS 应用程序写入的方式:

guard let defaults = UserDefaults(suiteName: "group.nl.mycompany.myappname") else { return }
defaults.set("Apple", forKey: "username")
defaults.synchronize()
Run Code Online (Sandbox Code Playgroud)

我通过获取如下值来确认这在我的 iOS 应用程序中有效:

guard let defaults = UserDefaults(suiteName: "group.nl.mycompany.myappname") else { return nil }
defaults.synchronize()
let name …
Run Code Online (Sandbox Code Playgroud)

nsuserdefaults ios swift tvos

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

使用 Swift Decodable 解析任意格式的 JSON 日期

我正在尝试将 JSON 文档中的日期格式化为“mm-dd-yyyy”格式。我有以下数据:

{"data":[{
    "id": 123,
    "url": "https://www.google.com",
    "title": "The Google link",
    "created_at": "2017-08-29T04:00:00.000Z",//date to format
    "sent": true,
    "alternative": "https://google.com",
    "things": [],
    "description": [
        "search",
        "lookup"
    ],
    "company": "Alphabet"
    }]}
Run Code Online (Sandbox Code Playgroud)

这是我的结构:

struct Sitedata: Decodable{
    let data: [site]
}

struct site: Decodable {
    let id: Int
    let url: String
    let title: String
    let created_at: String
    let sent: Bool
    let alternative: String
    let things: [String]
    let description: [String]
    let company: String
}

     let sites = try JSONDecoder().decode(Sitedata.self, from: data)
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法,但它产生了nil: …

json foundation date-parsing swift decodable

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

将阈值应用于数组中的所有值

我有1000个元素的数组,这些元素在0到1之间波动。

我想扫描该数组,并将低于某个阈值的所有值归零0.3

我知道我可以做类似的事情

let filteredArrayOnDict = myArray.filter { $0 > 0.3}
Run Code Online (Sandbox Code Playgroud)

我将获得一个包含以上元素的新数组0.3。但这不是我想要的。我想将元素低于0.3归零,并使结果数组具有相同数量的元素。

我可以像这样遍历数组

var newArray : [Double] = []
for item in myArray {
  if item > 0.3 {
    newArray.append(item)
  } else {
    newArray.append(0)
  }
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一些更神奇的方法使用这些神奇的命令,例如滤镜,地图,平面地图等。

arrays swift

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

Malloc'ed字符串包含垃圾值

我刚刚将Objective-C库转换为C库,希望能够跨平台.但是,在我发送这个东西进行处理之前,一切似乎都没问题.

这是我得到一个错误的点.

回顾一些修改,我在调试器中发现了一些东西.

就像malloc'd字符串之后那样:

char *theString = malloc(SOME_SIZE * sizeof(char));
Run Code Online (Sandbox Code Playgroud)

我会看到theString是\ x03而*theString是"3'\ 003'".

我首先假设这只是奇怪的记忆,因为我没有一个strcat或任何东西,但奇怪的起始字符继续,并在我执行类似malloc的每个其他点重复.

在正常处理方面,这很好.不幸的是,我不明白它是什么,否则,我只是做一些像切断第一个角色或其他东西一样的东西.

如果我想安全地将它转换为NSString,有人可以向我解释这是什么以及我如何处理它?

c malloc objective-c

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

向已释放的对象发送消息正在起作用

Objective-C中最简单的代码会导致奇怪的行为:

#import Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSObject *obj = [[NSObject alloc] init];
    NSLog(@"retain count %d",[obj retainCount]);//print 1
    [obj release];//obj deallocated
    NSLog(@"retain count %d",[obj retainCount]); //still printing 1 in Snow Leopard! Why??


    [pool drain];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

第二个NSLog()应该打印"message retainCount send to freed object = 0x103eb0".如果你使用Leopard一切正常,但在Snow Leopard中,第二个NSLog仍然可以打印1.

这是雪豹版Xcode中的一个错误吗?

cocoa memory-management objective-c

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

Objective-C代码的"eval"

evalObjective-C中是否存在类似Javascript,Ruby,PHP或Python的方法?

我使用PhoneGap,我想创建一个特定于我的每个项目的窗口,我不能使用HTML文件.所以我想从JavaScript调用一个方法,其中一个参数是Objective-C代码,需要解释.

eval objective-c cordova

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

创建一个int数组,其大小基于NSArray的大小

我正在尝试int根据运行时获得的大小创建并归零一个s 数组:

size = [gamePiece.availableMoves.moves count]; //debugger shows size = 1;
int array[size]; //debugger shows this as int[0] !
memset(array, 0, size);
indexes = array;
Run Code Online (Sandbox Code Playgroud)

size并且indexes都是这个类的ivars:

int size;
int* indexes;
Run Code Online (Sandbox Code Playgroud)

不过,我最终得到了一个0长度的数组.如何用指示的尺寸创建它[gamePiece.availableMoves.moves count]

c pointers objective-c dynamic-arrays

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

避免UIView触摸延迟

我正在使用UIView我的应用程序中的子类.当用户触摸视图时,我需要获得该点的坐标; 为此我正在使用:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

    currentPoint=[[touches anyObject]locationInView:self];

}
Run Code Online (Sandbox Code Playgroud)

它有一些延迟.任何人都可以给我解决方案立即获得积分吗?谢谢你们.

- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code.
        self.frame=frame;
        rect=[[NSMutableArray alloc] initWithCapacity:1];
        currentPointsList=[[NSMutableArray alloc]initWithCapacity:1];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    UITouch *touch = [touches anyObject];

    firstTouchedPoint = [touch locationInView:self];
    NSLog(@"the firstTouched point is %");
    for (int i=0; i<[rect count]; i++) {
    if(CGRectContainsPoint([[rect objectAtIndex:i]CGRectValue], firstTouchedPoint)){

        CGRect firstLineRect = CGRectMake(firstTouchedPoint.x,  
                                   [[rect objectAtIndex:i]CGRectValue].origin.y, 
                                   [[rect objectAtIndex:i]CGRectValue].size.width-firstTouchedPoint.x+[[rect objectAtIndex:i]CGRectValue].origin.x, 
                                   [[rect objectAtIndex:i]CGRectValue].size.height);
        UIImageView *firstLine=[[UIImageView alloc]initWithFrame:firstLineRect];
        firstLine.backgroundColor=[[UIColor blueColor]colorWithAlphaComponent:0.3f];
        [self …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c uiview uitouch ios

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

计算常数E值

我在Objective-C中进行计算.我有一个价值4.0468564224e-33.我不知道那个e常数的价值是多少.请帮帮我:我该如何计算这个常数值?如何在Objective-C中声明和计算常量值?

math objective-c

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

初始化自定义UITableViewCell

我正在尝试将一个自定义单元格加载到一个UITableView并且它不断抛出错误

UITableView dataSource必须从tableView:cellForRowAtIndexPath返回一个单元格:

我不知道为什么.我已将我的表视图单元格链接到我的代码中的UITableViewCell定义,但它一直给我这个错误.这是我的代码; 任何帮助将不胜感激.

#import "RegisterDeviceViewController.h"


@implementation RegisterDeviceViewController

@synthesize checkString;
@synthesize cellRegistration;

// The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
/*
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization.
    }
    return self;
}
*/


//Change UITableView Style to Grouped
- (id)initWithStyle:(UITableViewStyle)style {
    // Override initWithStyle: if you create the controller programmatically and want to …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch datasource uitableview custom-cell ios

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