gpt4 book ai didi

iphone - 写入 UITextView

转载 作者:行者123 更新时间:2023-11-29 11:04:04 29 4
gpt4 key购买 nike

我需要使用预定义位置字符串“Office”从所有日历中检索所有 iOS 事件,然后将结果写入 NSLog 和 UITextView。

到目前为止,这是我的代码:

    #import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize eventStore = _eventStore;
@synthesize events = _events;
@synthesize eventTextView;

- (void)viewDidLoad
{

// Store a reference to the event store
EKEventStore *eventStore = [[EKEventStore alloc] init];

[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted,
NSError *error) {
// handle access here
if (granted)
NSLog (@"Access granted");
}];
self.eventStore = eventStore;

// Define a range of event dates we want to display

NSDate *startDate = [NSDate dateWithTimeIntervalSinceNow:(-1*60*60)]; // 1 hour in

the past
NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:(60*60*24*365)]; // 1 year

from now

// Create a predicate to search all celndars with our date range

NSPredicate *predicate = [self.eventStore predicateForEventsWithStartDate:startDate
endDate:endDate calendars:nil];


// Query the event store using the predicate.

NSArray *results = [self.eventStore eventsMatchingPredicate:predicate];

//Convert the results to a mutable array and store so we can implement swipe to

delete

NSMutableArray *events = [[NSMutableArray alloc] initWithArray:results];
self.events = events;


// Load the events from the event store
//[self reloadEvents:nil];

[super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (void) reloadEvents:(id)sender
{
}

- (IBAction)getEvents:(id)sender {

int i;
int eventCount;

eventCount = [self.events count];

for (i = 0; i < eventCount; i++){

self.eventTextView.text = [[self.events objectAtIndex: i]title], [[self.events

objectAtIndex: i]startDate], [[self.events objectAtIndex: i]endDate], [[self.events

objectAtIndex: i]location];


NSLog (@"Event Title: %@, Event Start Date: %@, Event End Date: %@, Event

Location: %@",[[self.events objectAtIndex: i]title],
[[self.events objectAtIndex: i]startDate],
[[self.events objectAtIndex: i]endDate],
[[self.events objectAtIndex: i]location]);
}

}
@end

UITextView“eventTextView”中的结果是我只获得了我的最后一个事件标题,没有别的,但是在我的控制台中我获得了我所要求的一切。我这样做的方式正确吗?

此外,我了解到您可以订阅事件存储以获取通知/日历更改?在上述情况下,这将如何运作?我假设这将取代按钮操作,特别是如果应用程序设置为进入后台?

最佳答案

问题在这里:

self.eventTextView.text = [[self.events objectAtIndex: i]title], [[self.events 
objectAtIndex: i]startDate], [[self.events objectAtIndex: i]endDate], [[self.events
objectAtIndex: i]location];

请注意,您在循环的每次迭代中都替换 UITextView 的内容。您的意图是串联,在 Objective-C 中最好通过创建 NSMutableString 并对其调用 appendString 方法来处理。

循环外:

NSMutableString *textVal = [[NSMutableString alloc] init];

在你的循环中:

[textVal appendString:[[self.events objectAtIndex: i]title], [[self.events 
objectAtIndex: i]startDate], [[self.events objectAtIndex: i]endDate], [[self.events
objectAtIndex: i]location]];

循环后:

self.eventTextView.text = [NSString stringWithString:textVal];

关于iphone - 写入 UITextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14443576/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com