小编sye*_*dfa的帖子

NSDate在CoreData中保存为时间戳

我目前正在CoreData中的iOS应用程序中保存日期.在Core Data中,我的日期属性是"Date"类型.在我的NSManagedObjectSubclass文件中,属性的类型为:NSDate(很好).Core Data中的日期存储为:2014/05/16 14:54:51当我检查SQLite3导航器中的实际值时,它将以以下形式存储:

421959291.293972为该日期

我如何获得日期的上述值,有没有办法将其转换回形式:2014/05/16 14:54:51?我问这个是因为我试图通过CSV文件创建数据集,并希望确保我在CSV文件中输入的所有值都被Core Data/SQLite3正确转换为正确的格式.

csv sqlite core-data nsdate ios

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

在iOS中滑动后,尝试使表格单元格返回其原始状态

我有一个UITableView,我使用滑动删除功能,为用户提供删除行的选项.但是,我还实现了一个警报视图,当用户选择删除时会触发警报视图,询问用户是否确定,有两个按钮,是或否.如果用户按下是,则删除该行,这样可以正常工作.

但是,我的问题是,当用户选择"否"时,我无法动画表格单元格的移动以返回其正常的原始状态,同时隐藏它显示的删除按钮.我的问题是,我希望该行在用户在警报上按下no之后执行此操作,并使动画平滑,就像用户最初刷卡时一样.

我的代码如下:

- (void) cancelDelete {

    //[self.tableView reloadData];
    //NSLog(@"the indexpath is: %@ ", self.myIndexPath);
    //[self.tableView deselectRowAtIndexPath:self.myIndexPath animated:YES];
    [self.tableView reloadRowsAtIndexPaths:@[self.deletedRowIndexPath] withRowAnimation:UITableViewRowAnimationRight];

}
Run Code Online (Sandbox Code Playgroud)

我已经留下了注释线,以向您展示我使用/正在使用的内容.

[self.tableView reloadData]将单元格返回到其原始状态,但右侧没有单元格的滑动动画,这样它就会逐渐隐藏删除按钮. [self.tableView reloadRowsAtIndexPaths:@[self.myIndexPath] withRowAnimation:UITableViewRowAnimationRight]是什么在起作用最接近的,但不幸的是,它会导致细胞挺举到左边,然后向右滑动,而我不希望这个最初的抽搐运动.老实说,我认为这样[self.tableView deselectRowAtIndexPath:self.myIndexPath animated:YES]可行,但不幸的是,它在调用时没有做任何事情.我做错了什么?

objective-c uitableview ios

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

如何在不知道索引的情况下检查NSMutableArray中是否存在对象,并在iOS中替换它(如果存在)?

我有一个NSMutableArray包含Person类型的对象.Person对象包含NSString*name,NSString*dateStamp和NSString*testScore的参数.我想用快速枚举做的是检查NSMutableArray*testResults,查看是否存在具有相同名称参数的对象.

如果确实如此,那么我想NSMutableArray用我将要插入的具有dateStamp最新值的对象和testScore值替换现有对象.如果找到没有匹配name参数的对象,则只需插入我拥有的对象.

到目前为止,我的代码如下所示:

这是创建我要插入的对象的代码:

Person *newPerson = [[Person alloc] init];
    [newPerson setPersonName:newName]; //variables newName, pass, and newDate have already been 
    [newPerson setScore:pass];      //created and initialized
    [newPerson setDateStamp:newDate];
Run Code Online (Sandbox Code Playgroud)

这里是我尝试迭代NSMutableArray以查看是否已存在具有相同名称参数的对象的代码:

for (Person *checkPerson in personList) { //personList is of type NSMutableArray

        if (newPerson.newName == checkPerson.name) {

           //here is where I need to insert the code that replaces checkPerson with newPerson after a match has been found   


        }

        else …
Run Code Online (Sandbox Code Playgroud)

nsmutablearray fast-enumeration ios

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

需要从另一个viewController调用其他viewControllers中的方法

我有一个具有多个viewControllers的应用程序,其中一些viewControllers包含运行各种任务的方法.我需要做的是当初始viewController加载时,是在其他viewControllers中调用这些方法使它们在后台运行,但是,我在执行此操作时遇到了一些困难.

假设我有4个viewControllers,A,B,C和D,其中A是最初的viewController,在每个viewController中,我分别有aMethod,bMethod,cMethod和dMethod.这是相关代码:

在我打开的viewController(AviewController)里面:

在.h文件中:

#import "BViewController"
#import "CViewController"
#import "DViewController"

@interface AViewController:UIViewController {

BViewController *bViewCon;
CViewController *cViewCon;
DViewController *dViewCon;


}

@property (nonatomic, retain) BViewController *bViewCon;
@property (nonatomic, retain) CViewController *cViewCon;
@property (nonatomic, retain) DViewController *dViewCon;

@end
Run Code Online (Sandbox Code Playgroud)

在我的.m文件中,我有以下内容:

#import "BViewController"
#import "CViewController"
#import "DViewController"

@implementation AviewController

@synthesize bViewCon, cViewCon, dViewCon;

- (void) viewDidLoad {

[super viewDidLoad];

bViewCon = [[BViewController alloc] init];
[bViewCon bMethod];

...

}
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误消息,"没有可见的@interface为'BViewController'声明选择器'bMethod'".我需要从这个类(即AViewController)以相同的方式从其他viewControllers调用其他方法.

在此先感谢所有回复的人.

uiviewcontroller ios

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

需要知道用户何时点击iOS上的键盘上的"返回"

我正在使用iOS中的应用程序向用户显示随机字符串,并要求用户通过键盘输入相同的字符串.我想要做的是比较用户输入的字符串,仅在他们按下"返回"键后.这可能吗?

以下是我的相关方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {


    if (textField.tag == 1)
    {

            userString = @"";
            userString = keypadText.text;

            [keypadText resignFirstResponder];

           //here 'rand' is the random string that was presented earlier to the user, and userString is the text that the user has entered.
            if ([userString isEqualToString:rand]) {

                //do something

            }

            else {

                //do something else

            }

            [self.navigationController popViewControllerAnimated:YES];


    }

    return YES;

}
Run Code Online (Sandbox Code Playgroud)

正如我所说,我只想在用户按下"返回"键后进行比较,直到那时,允许用户尽可能多地输入给定的文本,并进行必要的修正.

有人能告诉我怎么做吗?

ios iphone-keypad

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

无法从Swift中的UIView呈现AlertController

我试图在Swift中显示AlertController,但不是来自UIViewController,而是来自从其父UIViewController调用的UIView.当我尝试调用控制器时,我收到以下错误:

Warning: Attempt to present <UIAlertController: 0x7fa5544a3140> on
<UINavigationController: 0x7fa553830400> whose view is not in the window
hierarchy!
Run Code Online (Sandbox Code Playgroud)

我试图调用alertController的代码是这样的:

let logInButton = TWTRLogInButton { (session, error) in
            if let unwrappedSession = session {
                let alert = UIAlertController(title: "Logged In",
                    message: "User \(unwrappedSession.userName) has logged in",
                    preferredStyle: UIAlertControllerStyle.Alert
                )
                alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
                //self.presentViewController(alert, animated: true, completion: nil)
                UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(alert, animated: true, completion: nil)
            } else {
                NSLog("Login error: %@", error!.localizedDescription);
            }
        }
Run Code Online (Sandbox Code Playgroud)

上面代码块中的注释行是原始代码块附带的内容,注释下面的行是我试图替换它的代码.任何人都可以看到它我做错了什么?

uiview ios swift uialertcontroller

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

希望使用过滤器方法基于使用Swift的数组中的两个属性来删除重复的模型对象

我有一个模型对象数组,我从JSON数据创建.我有成千上万的记录包含重复项,我需要删除它们.如果记录具有相同的"名称"和相同的"地址"属性,则该记录被视为重复.

问题是,我知道如何删除重复对象的唯一方法是在for循环搜索中执行for循环,我想知道是否有更好,更有效的方法?我认为最好的方法是使用"过滤器"方法,但是我很难配置它来处理包含具有多个属性的模型对象的数组.

我的模型对象如下所示:

struct Person {

    let id: Int
    let name: String
    let address: String


    init(id:Int, name:String, address:String) {
        self.id = id
        self.name = name
        self.address = address
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图在我的模型对象数组上使用filter方法的方式看起来像这样(我知道这不起作用):

let uniqueArray = peopleArray.filter { $0.name == $1.name, $0.address == $1.address }
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到它我做错了什么?

arrays ios swift

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

在iOS中使用NSNumberFormatter进行货币转换时遇到问题

我有一个UITextField,它接收我的应用程序中用户的数字输入.然后,在我的shouldChangeCharactersInRange委托方法中,使用NSNumberFormatter将此文本字段中的值转换为货币格式.当我输入数字"12345678"时,数字被正确转换为$ 123456.78(数字一次输入一位数,到目前为止,一切顺利).但是,当我在此之后输入另一个数字(例如9),而不是显示"1234567.89"时,会显示数字"1234567.88".如果我之后输入另一个数字,之后会有一个完全不同的数字(我在应用程序中使用数字键盘输入数字.这是我的代码:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
modifiedValue = [formatter stringFromNumber:[NSNumber numberWithFloat:[modifiedValue floatValue]]];
textField.text = modifiedValue;
Run Code Online (Sandbox Code Playgroud)

导致这种异常转换的行是这样的:

modifiedValue = [formatter stringFromNumber:[NSNumber numberWithFloat:[modifiedValue floatValue]]];
Run Code Online (Sandbox Code Playgroud)

谁能明白为什么会这样?

uitextfield nsnumberformatter ios uitextfielddelegate

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

如何使用Objective-C中的两个NSArray快速枚举来填充NSDictionary?

我有两个数组,一个保存键值(myKeys),另一个保存NSString对象(myStrings).我想使用两个数组来使用快速枚举来填充单个NSDictionary(myDictionary),但我不确定如何?

for (NSNumber *key in myKeys) {

   [self.myDictionary setObject @"here is where the value should go from the 'other' array forKey: key];

}
Run Code Online (Sandbox Code Playgroud)

我如何在这里考虑NSArray对象?

for-loop objective-c nsdictionary fast-enumeration

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