相关疑难解决方法(0)

SecItemAdd和SecItemCopyMatching返回错误代码-34018(errSecMissingEntitlement)

有时,当我在Xcode上运行设备上的应用程序时,我会尝试访问密钥链但由于错误-34018而失败.这与任何记录的钥匙串错误代码都不匹配,并且无法一致地再现.(可能有30%的时间发生,我不清楚为什么会发生这种情况).使调试这个问题变得非常困难的原因是完全缺乏文档.知道是什么导致这个以及如何解决它?我正在使用Xcode 5并在设备上运行iOS 7.0.4.

这里有一个公开的问题:https://github.com/soffes/sskeychain/issues/52

编辑:每个请求添加钥匙串访问代码

我正在使用该SSKeychain库与钥匙串连接.这是片段.

#define SERVICE @"default"

@implementation SSKeychain (EXT)

+ (void)setValue:(NSString *)value forKey:(NSString *)key {
    NSError *error = nil;
    BOOL success = NO;
    if (value) {
        success = [self setPassword:value forService:SERVICE account:key error:&error];
    } else {
        success = [self deletePasswordForService:SERVICE account:key error:&error];
    }
    NSAssert(success, @"Unable to set keychain value %@ for key %@ error %@", value, key, error);
    if (!success) {
        LogError(@"Unable to set value to keychain %@", error);
    }
    LogTrace(@"Will set …
Run Code Online (Sandbox Code Playgroud)

cocoa keychain ios sskeychain

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

清除完整的Realm数据库

我正在使用领域(目前为0.85.0),我的应用程序使用数据库来存储用户特定的数据,例如当前用户的联系人.当用户决定退出时,我需要删除关于用户的每一点信息,在我看来,最明显,简单和干净的东西将是擦除整个领域.不幸的是,Cocoa lib没有提供该功能.

目前,我坚持以下

RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[realm deleteObjects:[MyRealmClass1 allObjectsInRealm:realm]];
[realm deleteObjects:[MyRealmClass2 allObjectsInRealm:realm]];
[realm deleteObjects:[MyRealmClass3 allObjectsInRealm:realm]];
[realm commitWriteTransaction];
Run Code Online (Sandbox Code Playgroud)

任何更好的想法?

谢谢

realm ios

38
推荐指数
4
解决办法
3万
查看次数

使用Swift查询iOS Keychain

我使用Swift转换Keychain查询结果.

我的请求似乎正在起作用:

let queryAttributes = NSDictionary(objects: [kSecClassGenericPassword, "MyService",     "MyAccount",       true],
                                   forKeys: [kSecClass,                kSecAttrService, kSecAttrAccount, kSecReturnData])


dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
    var dataTypeRef : Unmanaged<AnyObject>?
    let status = SecItemCopyMatching(queryAttributes, &dataTypeRef);

    let retrievedData : NSData = dataTypeRef!.takeRetainedValue() as NSData
    *** ^^^^can't compile this line^^^^
})
Run Code Online (Sandbox Code Playgroud)

我的问题是,代码无法编译:

Bitcast requires both operands to be pointer or neither
  %114 = bitcast %objc_object* %113 to %PSs9AnyObject_, !dbg !487
Bitcast requires both operands to be pointer or neither
  %115 = bitcast %PSs9AnyObject_ %114 to i8*, !dbg !487
LLVM …
Run Code Online (Sandbox Code Playgroud)

keychain ios swift

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

为什么我的Realm对象没有保存存储的值?

我正在浏览寻找一个解决方案,在我的一个应用程序中实现一个小型离线数据存储,这将很容易和快速使用.无论如何,我遇到了Realm这样做.但是,我遇到的问题是,每次启动应用程序时,数据库中的内容都为空.

我做了所有的分配并调用了beginWriteTransaction方法.设置我的数据库变量值.然后,我将对象添加到领域,最后是commitWriteTransaction.

所以,我做一个NSLog来查看该值是否实际设置正确(在我的应用程序中更新之后).但是当我关闭我的应用程序或停止并在xcode iphone5模拟器中再次运行它.我尝试在viewDidLoad方法中设置数据库中的值到我的应用程序中的全局变量.我执行的NSLog来检查值是在我的数据库或全局变量,但它显示为空,也没有得到店/保存的意义.

这是代码..

@interface iReceiptDataBase : RLMObject

@property NSString* receiptNo;

@end

RLM_ARRAY_TYPE(iReceiptDataBase)

@implementation iReceiptDataBase

@end

//******** View Controller Implementation ************

- (void)viewDidLoad {

    self.realm = [RLMRealm defaultRealm]; // property type RLMRealm
    [realm beginWriteTransaction];

    self.myDataBase = [[iReceiptDataBase alloc] init]; // property type iReceiptDataBase
    receiptNumber = [myDataBase.receiptNo intValue];

    NSLog(@"In my realm database(first call) -> %@", myDataBase.receiptNo);

    NSLog(@"In my local app(first call) -> %d", receiptNumber);

}

-(void)drawPDF:(NSString*)fName {

    receiptNumber += 1; …
Run Code Online (Sandbox Code Playgroud)

objective-c realm ios

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

Realm数据库对象似乎是空的,但后来却不是

我正在使用Realm进行一个简单的小项目.我正在使用最新版本的框架(昨天从Github编译)和当前AppStore版本的Xcode和Swift 2.1.

我正在通过segue将Realm数据库对象从一个视图控制器移交给另一个视图控制器prepareForSegue(),以便对其进行编辑(并填写当前值).

不知何故,目标视图控制器中的对象似乎存在问题.当我只是print()目标视图控制器中的对象(在viewDidLoad()我计划使用它的任何方法中)时,对象在控制台中正确显示,如下所示:

Object {
name = asdf
value = 8
}
Run Code Online (Sandbox Code Playgroud)

等等.

如果我尝试访问这些值(即使在上一行或下一行中)并将它们分配给另一个变量,就像myValue = objectToEdit.value我得到0一样.

通过使用断点调试代码来显示调试器中的对象,其中所有值为空("")或0,具体取决于类型.不过,不管怎么说,Strings因为某些原因被抓出来了,我可以访问并打印它们myString = objectToEdit.name,而调试器显示name = (String) "",声称它是空的.

当我在第一个视图中从数据库中获取数据库对象时,已经发生了相同的行为.直接的想法是,值确实为0并且只保存了字符串,但print()方法另有说法.

任何人都可以解释这种奇怪的行为,也许可以告诉我哪些地方忽略了什么?我现在怀疑这是框架的一些内部问题,但我不确定.如果需要,我当然会更新代码或回答问题.

realm ios swift

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

标签 统计

ios ×5

realm ×3

keychain ×2

swift ×2

cocoa ×1

objective-c ×1

sskeychain ×1